我有两个实体:Image
和Tags
,具有多对多关系。
Image
有一些字段:code
, description
,author
并tags
实现了多对多关系。
Tag
只有两个字段: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
所有标签作为字符串返回的实体中使用虚拟字段,但稍后我无法在查询生成器中使用它。
非常感谢!