我有两个实体:Image和Tags,具有多对多关系。
Image有一些字段:code, description,author并tags实现了多对多关系。
Tag只有两个字段:name和images.
我正在构建一个非常通用的搜索表单,只有一个输入字段,您可以在其中编写任何文本,然后将返回Image在其或字段或其任何标签字段中包含该文本的任何内容。codedescriptionauthorname
对于非关系字段,这很容易。我在我的控制器中有(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所有标签作为字符串返回的实体中使用虚拟字段,但稍后我无法在查询生成器中使用它。
非常感谢!