私には2つのエンティティがあります:ImageとTags、多対多の関係があります。
Imagecode、、、および多対多の関係を実装するいくつかのフィールドがありますdescription。authortags
Tagフィールドは2つだけです:nameとimages。
私は非常に一般的な検索フォームを作成しています。入力フィールドだけで任意のテキストを入力できImage、そのテキストが、、フィールドcode、descriptionまたはauthor任意のタグnameフィールドに含まれているものが返されます。
非関係フィールドの場合、それは簡単です。私は自分のコントローラーにあります(query検索に使用されるのは単なるde GETパラメーターです):
$em = $this->getDoctrine()->getManager();
$qb = $em->getRepository('MyBundle:Image')->createQueryBuilder('i');
$qb
->where(
$qb->expr()->like('i.code', $qb->expr()->literal('%'.$request->get('query').'%'))
)
->orWhere(
$qb->expr()->like('i.description', $qb->expr()->literal('%'.$request->get('query').'%'))
)
->orWhere(
$qb->expr()->like('i.author', $qb->expr()->literal('%'.$request->get('query').'%'))
);
nameさて、の各フィールドの進め方がわかりませんtags。
すべてのタグを文字列として返すエンティティで仮想フィールドを使用しようとしましたImageが、後でクエリビルダーで使用できません。
どうもありがとう!