Doctrine:当数组中的id数组时得到结果

时间:2014-11-20 13:50:51

标签: arrays symfony doctrine request dql

我正在开发一个网站,而且我正面临着一个问题。 我的问题是以下一个:我有一个带标签的实体(日)(标签也是一个实体),我有一个标签列表。我希望得到标签中至少包含我所有标签列表的日子。

以下是一个例子:

我的标签列表:" tag1"," tag2"。

我的日子:

  • day1有标签" tag1"," tag2"," tag3"
  • day2有标记" tag1"

我的请求应该返回day1,因为我的列表中的所有标记都在day1的标记中。 但我的结果中有第1天和第2天:'(

这是我的代码:

$qb = $this->createQueryBuilder('d')
            ->leftJoin('d.tags', 't')
            ->where('t IN (:tags)')
            ->setParameter('tags', $tags);


    return $qb->getQuery()->getResult();

有人能帮助我吗?

感谢。

1 个答案:

答案 0 :(得分:0)

尝试按日分组,只保留包含两个标记的结果。

$qb = $this->createQueryBuilder('d')
    ->innerJoin('d.tags', 't')
    ->where('t IN (:tags)')
    ->groupBy('d')
    ->having('count(*) > 1')
    ->setParameter('tags', $tags);