Yii关于左连接的问题 [ 1.1 版本 ]
先说明下t
表的user_id
字段跟s
表的id
字段是关联
的(t
表的主键
为id
字段,s
表同样)
$criteria=new CDbCriteria;
$criteria->select = 's.* ';
$criteria->condition='t.user_id=:user_id and t.is_deleted=:is_deleted';
$criteria->params=array(':user_id'=>$user_id,':is_deleted'=>self::IS_DELETED_NO);
$criteria->order = 't.id desc';
$criteria->join = "LEFT JOIN user AS s ON t.user_id=s.id";
$this->findAll($criteria);
打印出的SQL语句为:
SELECT s.* FROM `message` `t` LEFT JOIN user AS s ON s.id=t.user_id WHERE t.user_id=5 and t.is_deleted=0 ORDER BY t.id desc
把SQL拿到数据库里可以运行,而且也能得到s表
的所有字段
数据,
但是我var_dump()
这个查询出来的数据,发现只有两个字段,其余的字段都查不到
private '_attributes' (CActiveRecord) =>
array (size=2)
'id' => string '636' (length=3)
'status' => string '1' (length=1)
这里我把s.*
改为t.*,s.username
$criteria=new CDbCriteria;
$criteria->select = 't.*,s.username';
$criteria->condition='t.user_id=:user_id and t.is_deleted=:is_deleted';
$criteria->params=array(':user_id'=>$user_id,':is_deleted'=>self::IS_DELETED_NO);
$criteria->order = 't.id desc';
$criteria->join = "LEFT JOIN user AS s ON t.user_id=s.id";
$this->findAll($criteria);
接着var_dump()
这个查询出来的数据,发现能查出来s表
的所有字段
,但是t表
的username
,根本就没有出现。
private '_attributes' (CActiveRecord) =>
array (size=8)
'id' => string '2099' (length=4)
'user_id' => string '636' (length=3)
'title' => string 'You've received a new incentive.' (length=32)
'type' => string 'notification' (length=12)
'content' => string '{"rewardsId":"161"}' (length=19)
'status' => string '1' (length=1)
'createdtime' => string '1445308021' (length=10)
'is_deleted' => string '0' (length=1)
同样拿打印出来的SQL语句放到数据库里面直接查询,可以查到s表
的所有字段
+t表
的username
字段
求大神解答??
共 2 个回答
-
a15989186502 回答于 2015-10-27 14:54 举报
$command = Admin::find()->select('tbl_user.,tbl_admin.')->join('LEFT JOIN','tbl_user','tbl_user.admin_id = tbl_admin.id')->asArray()->all();
某渣
注册时间:2015-05-02
最后登录:2017-10-28
在线时长:4小时44分
最后登录:2017-10-28
在线时长:4小时44分
- 粉丝2
- 金钱159
- 威望0
- 积分199