如何使两个表中选择yii2

问题描述:

我请求到数据库:如何使两个表中选择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

“鉴于我做出这样的选择:” 看起来不像有效的代码给我。你是用伪代码编写还是在其他地方定义了这些关键字? –

确保您已声明关系。

像:

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();