web-dev-qa-db-ja.com

yii2のクエリでselectwhereを使用します


タイトルを返しません。では、クエリで何を変更できますか?

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

クエリは次のように形成されます-

SELECT title FROM topics WHERE id IN (1,2,3);

したがって、配列の配列を取得します。また、クエリを実行する必要があります。

試してください-

$query = (new \yii\db\Query())->select(['title'])->from('topics')->where(['id' => [1, 2, 3]]);
$command = $query->createCommand();
$data = $command->queryAll();
$titles = '';
foreach($data as $row) {
    $titles .= $row['title'] . ', ';
}
return rtrim($titles, ', ');

各レコードのtitleは、カンマで区切られて取得されます。

9
Kunal Dethe

このコードを試してください:

$users=[1,2,3];
User::find()->where('id IN('.$users.')');
4
 [
   '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'];
      }
 ],

mこのコードを入力しますが、ここでエラーが発生します。

未定義のインデックス:タイトル

タイトルはトピックテーブルで利用できます。

1
cms