2016-05-19 3 views
-1

Мой запрос к базе данных:Как сделать выбор из двух таблиц yii2

query = new Query(); 

$messages = $query->select(['name', 'message', 'date'])->from(['`user`','`message`'])->where('`user`.id = `message`.id_user AND id_addressee = '.$id.' AND id_user = '.Yii::$app->user->id)->orderBy('date')->all(); 

in view I make a selection like this: 
<?php foreach($messages as $mess): ?> 
      <tr> 
       <td> 
        <?= Html::encode("{$mess->user->name}") ?> 
       </td> 
       <td> 
        <?= Html::encode("{$mess->message}") ?> 
       </td> 
       <td> 
        <?= Html::encode("{$mess->date}") ?> 
       </td> 
      </tr><?php endforeach; ?> 

Все поля являются пустыми. Что я делаю не так?

+1

"в виду я сделать выбор так:" не похож на действительный код для меня. Вы пишете в псевдокоде или заданы ли эти ключевые слова в другом месте? –

ответ

0

Удостоверьтесь, что у вас есть заявленная связь.

Как:

class User extends \yii\db\ActiveRecord 
{ 
    public function rules(){ 
     return [ 
      [['name'], 'string'], 
     ]; 
    } 
    public function getMessage(){ 
     return $this->hasOne(Message::className(), ['user_id' => 'id']); 
    } 
} 

Тогда:

$record = User::find() 
     ->joinWith('message') 
     ->all(); 
Смежные вопросы