如何使两个表中选择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; ?>
所有字段都是空的。我究竟做错了什么?
答
确保您已声明关系。
像:
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();
“鉴于我做出这样的选择:” 看起来不像有效的代码给我。你是用伪代码编写还是在其他地方定义了这些关键字? –