私の Symfony2 プロジェクトでは、次のようなクエリがあります。
$paperQB = $this->createQueryBuilder( 'p' )
->select('p')
->where("p.title LIKE :q OR p.keywords LIKE :q OR p.abstract LIKE :q OR p.id LIKE :q")
->setFirstResult( $first_result )
->setMaxResults( $papers_per_page )
->orderBy($sort_by_culumn, $sort_by_order)
->setParameter('q', '%'.$q.'%');
そこではすべて問題ありませんが、私の紙のエンティティでは、セクション エンティティと多対 1 の関係があります。だから、私も手に入れたい:
"OR p.section.name LIKE :q"
これはどのように可能ですか?そのために結合を使用する必要がありますか? クエリビルダーは、コントローラーのようにこれらの関係を使用する方法を知りません:$p->getSection()->getName()
または小枝p.section.name
?
どうもありがとう。
編集:
とりあえずやったこと:
$paperQB = $this->createQueryBuilder( 'p' )
->select('p')
->where("p.title LIKE :q OR p.keywords LIKE :q OR p.abstract LIKE :q OR p.id LIKE :q OR s.name LIKE :q OR c.name_full LIKE :q")
->leftJoin('p.conference', 'c')
->leftJoin('p.section', 's')
->setFirstResult( $first_result )
->setMaxResults( $papers_per_page )
->orderBy($sort_by_culumn, $sort_by_order)
->setParameter('q', '%'.$q.'%');
しかし、クエリビルダーがエンティティとその関係を使用しないのはなぜですか?