2015-09-20 49 views
0

我有一个CDBCriteria这里:Yii的CDBCriteria LEFT JOIN不工作

$criteria = new CDbCriteria; 
$criteria->select = array('t.lastname', 't.name', 't.patronomic', 't.dob', 'n.nationality', 't.token', 'm.status'); 
$criteria->join = 'LEFT JOIN hrp_nationalities n ON (n.id = t.nationality_id) '; 
$criteria->join .= 'LEFT JOIN hrp_marital_status m ON m.id = t.marital_status_id'; 
$criteria->condition = "t.`alive` = 1 AND t.`org_id` = ".$_SESSION['org_id']; 
$criteria->order = 't.id DESC'; 

我的问题是,为什么m.statusn.nationality没有检索到生成的对象?

回答

0

如果您在模型类上使用CDbCriteria,例如$results = User::model()->findAll($criteria);,那么结果将只包含来自用户表的字段,而不包含关系'。其原因是,创建最终模型对象时没有申报模型的关系列字段。所以你需要创建模型领域..

你的情况nationalitystatus

只要写在你的模型

public $nationality; 
public $status; 

而如果你的模式也有一个名为status场,使用的别名关系的领域status ...

public $m_status; 
$criteria->select = array('t.lastname', 't.name', 't.patronomic', 't.dob', 'n.nationality', 't.token', 'm.status as m_status'); 

我只记得我已经回答了一个古老的类似问题..读答案在这里:https://stackoverflow.com/a/11594530/1114536