2014-09-18 2 views
6

Он не возвращает название. Итак, что я могу изменить в запросе?Используйте select, где в запросе в yii2

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

Проверьте следующие ссылки. Может быть полезно http://stackoverflow.com/questions/25469689/yii2-update-field-with-query-builder/25580836#25580836 – Kshitiz

ответ

6

Ваш запрос формируется что-то вроде -

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

Таким образом, вы получите массив массив. Также вам нужно выполнить запрос.

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, ', '); 

Вы получите title для каждой записи, разделенных запятыми.

+0

Если вышеприведенный ответ сработал хорошо для вас, тогда примите ответ так, чтобы он был не перечисленные в списке «Без ответа». –

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 положить этот код, но здесь ошибка генерировать это.

Undefined индекс: название

заголовок для таблицы тем.

+0

Скажите, что вы получаете все 3 записи, тогда вам нужно отображать их как разделенные запятыми или что-то в этом роде? –

+0

Обновлен ответ. Он будет возвращать разделенные запятыми заголовки, но если вам нужно вернуться в другом формате, измените соответствующим образом. –

+0

благодарю вас за правильную работу – cms

2

Попробуйте этот код:

$users=[1,2,3]; 
User::find()->where('id IN('.$users.')'); 
Смежные вопросы