2014-09-18 8 views
6

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; 
+0

Controllare i seguenti link. Potrebbe essere utile http://stackoverflow.com/questions/25469689/yii2-update-field-with-query-builder/25580836#25580836 – Kshitiz

risposta

6

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.

+0

Se la risposta sopra ha funzionato bene per te allora accetta la risposta in modo che sia non elencato più nell'elenco "Senza risposta". –

0
[ 
    '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.

+0

Diciamo che ottieni tutti e 3 i record, quindi devi visualizzarli come separati da una virgola o qualcosa del genere? –

+0

Aggiornamento della risposta. Restituirà titoli separati da virgola ma se è necessario tornare in qualche altro formato, modificare di conseguenza. –

+0

grazie proprio lavoro – cms

2

provare questo codice:

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