以下活动记录WHERE IN查询不起作用。根据文档,这应该可以工作:
$data = $dropDownData->find()
->select('country, country_text')
->distinct()
->WHERE(['in', 'server', $servers]);
$listData = ArrayHelper::map($data,'country', 'country_text');
sql等效项是:
$query = "SELECT DISTINCT country, country_text
FROM `dropDownData`
WHERE server IN ({$servers})";
$ servers仅包含字符串1,2,4
我在这里做什么错了?
答案 0 :(得分:3)
基于Yii2文档$servers
应该是数组而不是字符串。
in:操作数1应该是列或数据库表达式。操作数2可以是 数组或查询对象。
https://www.yiiframework.com/doc/guide/2.0/en/db-query-builder#operator-format
尝试使用适当的数组:
$servers = [1,2,4]
$data = $dropDownData->find()
->select('country, country_text')
->distinct()
->WHERE(['in', 'server',[1,2,4]]);
或
$data = $dropDownData->find()
->select('country, country_text')
->distinct()
->WHERE(['in', 'server', $servers]);
答案 1 :(得分:-1)
您应该使用数组变量
$servers = [1,2,4];