2016-05-16 8 views
0

私のアプリに「検索エンジン」を作ろうとしていて、表示したいテーブルには別のテーブルに関連付けられている2つのフィールドがあります。symfony 3の関連クエリで "where"を発行しました

このクエリを使用してイム:

Select work from WorkBundle:Work work 
     where work.client.name like '$search%' 

作業は、表の「ユーザー」および「クライアント」に関連付けられている、私は関連付けが正しく、私は内側の文を結合を使用するために持っていけない、しかし私そのように定義されています次のエラーが表示されます。

[Semantical Error] line 0, col 68 near 'nombre like 'fsdf%'': Error: Class WorkBundle\Entity\Work has no field or association named client.nombre 

「クライアント」テーブルの「名前」フィールドへのアクセス方法はわかりません。

実際に私は完全な内部結合クエリを使用して同じことを行うことができ、それが動作しますが、私はアプリでそれを使用することはできません。

+0

SQLまたはDQLを使用していますか?このクエリを使用してコントローラまたはリポジトリクラスの一部を提供できますか? – Asgu

+0

*実際には、完全な内部結合クエリを使用して同じことをすることができますが動作しますが、私はアプリでそれを使用することはできません。 – DevDonkey

+0

imはDQLを使用していますが、コントローラの一部またはrepositoreが提供するものはわかりません:S – xXNukem

答えて

0

確かにわかりませんが、work.client.nameのようなセレクタは使用できません。私はdoctrineが "怠惰な"クエリを使用していると考えています。したがって、この場合はテーブル結合を使用する必要があります。 そのように見えるはずです

// work repository 
public function findByKeyword($keyword) 
{ 
    $qb = $this->createQueryBuilder("w"); 
    $result = $qb 
     ->add('where', $qb->expr()->like("wc.name", ':keyword')) 
     ->leftjoin("w.client", "wc") //or join or innerjoin depends of your case 
     ->setParameters([ 
      'keyword' => $keyword 
     ]) 
     ->getQuery() 
     ->getResult() 
     ; 

    return $result; 
} 
+0

答えをありがとうが、それは問題を解決しませんでした、多分配列を検索するいくつかの方法を見つける必要があるクエリは、 – xXNukem

関連する問題