首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原则2,ManyToMany搜索

原则2,ManyToMany搜索
EN

Stack Overflow用户
提问于 2013-04-25 03:54:22
回答 1查看 171关注 0票数 1

我有两个与ManyToMany关系链接的Doctrine表。

表:条目

TabLe:标签

我希望能够找到具有多个或一个标签的条目,这些标签与我输入的每个标签相匹配。

例如: En条目"foo“有标签"1”和"2“。如果我尝试查找标签为"1“的每个条目,我会找到这个条目,如果我同时搜索"1”和"2“,我会再次找到它,但如果我添加了标签"3”的搜索,则值不匹配。

到目前为止,我已经找到了一些用OR实现这类事情的简单方法,但它没有给我想要的结果,我真的不知道如何使用Doctrine 2进行这种搜索。

通常我会使用关系表来做这件事,但我不知道在Doctrine下这是否可能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-25 23:31:13

我真的不确定我是否理解了,但试着看看这是否有效:

代码语言:javascript
复制
//class EntryRepository

public function yourFunction($tags)
{
    return $this->createQueryBuilder("o")
       ->innerJoin("o.Tags", "t", "WITH", "t.name IN :tags")
           ->setParameter("tags", $tags)
       ...
}

这将返回在$tags数组中至少有一个标记的条目。如果这是你想要的,你也可以玩一下

代码语言:javascript
复制
->addSelect( "COUNT(t.id) as HIDDEN relevance")->groupBy("o.id")
->orderBy("relevance")   

这将按照匹配的标签数量的顺序返回结果,但我没有对其进行测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16200968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档