2

私の 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.'%');

しかし、クエリビルダーがエンティティとその関係を使用しないのはなぜですか?

4

1 に答える 1