我有两个与ManyToMany关系链接的Doctrine表。
表:条目
TabLe:标签
我希望能够找到具有多个或一个标签的条目,这些标签与我输入的每个标签相匹配。
例如: En条目"foo“有标签"1”和"2“。如果我尝试查找标签为"1“的每个条目,我会找到这个条目,如果我同时搜索"1”和"2“,我会再次找到它,但如果我添加了标签"3”的搜索,则值不匹配。
到目前为止,我已经找到了一些用OR实现这类事情的简单方法,但它没有给我想要的结果,我真的不知道如何使用Doctrine 2进行这种搜索。
通常我会使用关系表来做这件事,但我不知道在Doctrine下这是否可能。
发布于 2013-04-25 23:31:13
我真的不确定我是否理解了,但试着看看这是否有效:
//class EntryRepository
public function yourFunction($tags)
{
return $this->createQueryBuilder("o")
->innerJoin("o.Tags", "t", "WITH", "t.name IN :tags")
->setParameter("tags", $tags)
...
}这将返回在$tags数组中至少有一个标记的条目。如果这是你想要的,你也可以玩一下
->addSelect( "COUNT(t.id) as HIDDEN relevance")->groupBy("o.id")
->orderBy("relevance") 这将按照匹配的标签数量的顺序返回结果,但我没有对其进行测试。
https://stackoverflow.com/questions/16200968
复制相似问题