Gridview 在yii2中使用“选择查询中的位置”

Gridview 在yii2中使用“选择查询中的位置”,gridview,yii2,Gridview,Yii2,它不返回标题。 那么,我可以在查询中更改什么 $query = (new Query())->select('title')->from('topics')->where(['id' => [1, 2, 3]]); return $query->title; 您的查询的形式如下- SELECT title FROM topics WHERE id IN (1,2,3); 所以你会得到数组的数组。您还需要执行查询 试一试- 您将获得每条记录的标题,以逗号分隔 [

它不返回标题。 那么,我可以在查询中更改什么

$query = (new Query())->select('title')->from('topics')->where(['id' => [1, 2, 3]]);
return $query->title;

您的查询的形式如下-

SELECT title FROM topics WHERE id IN (1,2,3);
所以你会得到数组的数组。您还需要执行查询

试一试-

您将获得每条记录的
标题
,以逗号分隔

 [
   'attribute' => 'topic_id',
   'format' => 'raw',
   'value' => function($data){
    $query = (new Query())->select(['title'])->from('topics')->where(['id' => [1, 2, 3]]);
      $command = $query->createCommand();
      $data= $command->queryAll();
      foreach($data as $row)
        return  $data['title'];
      }
 ],
我把这段代码放在这里,但在这里产生了错误

未定义索引:标题

标题可用于主题表。

请尝试以下代码:

$users=[1,2,3];
User::find()->where('id IN('.$users.')');

假设你得到了所有3条记录,那么你需要将它们显示为逗号分隔的或类似的形式?更新了答案。它将返回逗号分隔的标题,但如果您需要以其他格式返回,请相应地进行修改。如果上面的答案对你来说很好,那么接受答案可能会有帮助,这样它就不会再列在“未回答”列表下了。
$users=[1,2,3];
User::find()->where('id IN('.$users.')');