我有以下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包含逗号分隔值。如果我将该变量更改为数组,我会收到以下消息:
注意:数组转换为字符串
请有人对我的问题有所了解。我完全被难倒了。
答案 0 :(得分:2)
对于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);