[英]Left Join with Yii CDbCriteria
我有一个查询如下:
SELECT messages.id,
messages.sender_id,
messages.subject,
messages.body,
messages.created_at,
user.username AS username
FROM messages LEFT JOIN user ON user.iduser=messages.sender_id
我试图将查询更改为CDbCriteria模型,如下所示:
$criteria = new CDbCriteria();
$criteria->select = "messages.id, messages.sender_id, messages.subject, messages.body, messages.created_at, user.username AS username";
$criteria->alias = "messages";
$criteria->join = "LEFT JOIN user ON user.iduser=messages.sender_id";
$messagesAdapter = Message::model()->findAll($criteria);
但是,当我执行查询时,出现如下错误:
未定义属性“ Message.username”。
查询中有什么错误? 请帮忙。
您应该使用relation name
来打印用户名或用户属性 ,即。 用户。*。
为此,您应该在用户模型的消息模型中具有关系。 就像是..
public function relations()
{
return array(
......
......
'userRel' => array(self::HAS_MANY, 'User', 'isuser'),
......
);
}
现在,您可以使用此关系名称userRel
打印用户名
//check this
print_r($messagesAdapter[0]->userRel);
//May be you can get username with below statement as you are using left join
echo $messagesAdapter[0]->userRel[0]->username;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.