以下事件记录 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

我在这里做错了什么?

最佳答案

基于 Yii2 文档 $servers 应该是一个数组而不是一个字符串。



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]);

10-08 07:58