私には2つのエンティティがあります:Image
とTags
、多対多の関係があります。
Image
code
、、、および多対多の関係を実装するいくつかのフィールドがありますdescription
。author
tags
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
が、後でクエリビルダーで使用できません。
どうもありがとう!