我的'where in'原则DQL查询没有返回预期的结果


Why does my 'where in' Doctrine DQL query not return expected results?

我有以下DQL查询:

$queries_query = $this->_em->createQuery('SELECT q FROM 'Entities'Query q INNER JOIN q.store s WHERE s.tvRegionId IN (?1)');
$queries_query->setParameter(1, $tv_region_ids);

它只返回与where子句中的第一个值匹配的结果。变量$tv_region_ids包含逗号分隔的值。如果我将该变量更改为数组,我将得到以下消息:

注意:数组到字符串的转换

有谁能给我的问题指点指点吗?我完全被难住了。

对于IN类型查询,不能将字符串传入DQL。你需要传入一个数组。由于DQL的工作方式与预处理语句非常相似,因此IN查询被视为表达式,并且必须将原始数据提供给setParameter函数。

$tv_region_ids = [16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1];
$queries_query = $this->_em->createQuery('SELECT q FROM 'Entities'Query q INNER JOIN q.store s WHERE s.tvRegionId IN (?1)');
$queries_query->setParameter(1, $tv_region_ids);

转换你的字符串(只是大小写)

$string = "16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1";
$tv_regions_ids = explode(",", $string);