我有以下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);