我正在尝试根据一组标准匹配两个实体,但我似乎无法在这种特殊情况下使其工作。
出于示例的目的,让我们说:
带有N标签的文章 带有1个标签的类别
我想要做的是,在我的存储库中执行以下操作:
$this->createQueryBuilder('article')
->join('App\Enttiy\Category', 'c', Join::WITH, 'c.id = :category_id)
->where('c.tag IN article.tags')
->andWhere(':category_id', $category->getId())
->getQuery()
->getResult();
当然,在这个例子中,最简单的方法是定义我的对象之间的关系,但在我的实际情况中,这种关系将是一场噩梦。
我遇到的问题是where
行,因为IN
条款没有这样做。
任何人都知道我如何使用DQL来做到这一点? :)
先谢谢
答案 0 :(得分:0)
首先,您的andWhere
无法使用,您需要使用->setParameter()
,而不是这样:
$this->createQueryBuilder('article')
->join('App\Enttiy\Category', 'c', Join::WITH, 'c.id = :category_id')
->where('c.tag IN article.tags')
->setParameter('category_id', $category->getId())
->getQuery()
->getResult();
之后,您忘记了'
中的join
,此处:'c.id = :category_id
,我在我的示例中添加了它(不知道它是否输入错误)。
请尝试使用此功能并告诉我您是否再次出现错误,如果您有错误,请告诉我它是什么。