【发布时间】:2012-11-03 11:13:10
【问题描述】:
我有两个实体:Image 和 Tags,具有多对多关系。
Image 有一些字段:code、description、author 和 tags,它们实现了多对多关系。
Tag 只有两个字段:name 和 images。
我正在构建一个非常通用的搜索表单,只有一个输入字段,您可以在其中编写任何文本,然后它将返回任何在其 code、description 或 @987654334 中包含该文本的 Image @ 字段,或其任何标签中的 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').'%'))
);
现在,我不知道如何处理 tags 的每个 name 字段。
我曾尝试在Image 实体中使用一个虚拟字段,该字段将所有标签作为字符串返回,但我稍后无法在查询生成器中使用它。
非常感谢!
【问题讨论】:
标签: symfony doctrine-orm symfony-2.1 doctrine-query