Non restituisce alcun titolo. Quindi, cosa posso cambiare nella query?Utilizzare select where in query in yii2
$query = (new Query())->select('title')->from('topics')->where(['id' => [1, 2, 3]]);
return $query->title;
Non restituisce alcun titolo. Quindi, cosa posso cambiare nella query?Utilizzare select where in query in yii2
$query = (new Query())->select('title')->from('topics')->where(['id' => [1, 2, 3]]);
return $query->title;
Vostri criteri si forma qualcosa di simile -
SELECT title FROM topics WHERE id IN (1,2,3);
Così si otterrà array di array. Inoltre è necessario eseguire la query.
Try -
$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, ', ');
Otterrete la title
per ogni record, separati da virgola.
Se la risposta sopra ha funzionato bene per te allora accetta la risposta in modo che sia non elencato più nell'elenco "Senza risposta". –
[
'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 metti questo codice ma qui errore genera questo.
Undefined index: titolo
titolo è disponibile per il tavolo argomenti.
Diciamo che ottieni tutti e 3 i record, quindi devi visualizzarli come separati da una virgola o qualcosa del genere? –
Aggiornamento della risposta. Restituirà titoli separati da virgola ma se è necessario tornare in qualche altro formato, modificare di conseguenza. –
grazie proprio lavoro – cms
provare questo codice:
$users=[1,2,3];
User::find()->where('id IN('.$users.')');
Controllare i seguenti link. Potrebbe essere utile http://stackoverflow.com/questions/25469689/yii2-update-field-with-query-builder/25580836#25580836 – Kshitiz