我想在查询中使用WHERE IN(array)子句。
$criteria = new CDbCriteria;
$criteria->addCondition('id_cty_cmp IN(:ids)');
$criteria->params = array(':ids' => $ids); // binding array
$cmps = Component::model()
->with(array('type', 'values'))
->findAll($criteria);
像这样,我得到“数组到字符串转换”错误。
当我使用
时$criteria->params = array(':ids' => implode(',', $ids));
我什么都没有(空阵列)。
当我不使用绑定时,它可以工作(但显然不是一个好习惯):
$criteria = new CDbCriteria;
$criteria->addCondition('id_cty_cmp IN(' . implode(',', $ids) . ')');
有什么想法吗?
答案 0 :(得分:2)
好的,这是解决方案。可以帮助未来的googlers。
$criteria = new CDbCriteria;
$criteria->addInCondition('id_cty_cmp', $ids);
答案 1 :(得分:1)
以防万一你想知道
的原因$criteria->params = array(':ids' => implode(',', $ids));
无法返回任何记录,因为:ids
将绑定一个字符串,如下所示:
id_cty_cmp IN('1,2,3')
显然,没有id_cty_cmp
与奇怪的值'1,2,3'
匹配。
您的解决方案提供的方式如下:
id_cty_cmp IN('1','2','3')