2015-09-20 2 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.status и n.nationality не получены в результате объект?

ответ

0

Если вы используете CDbCriteria для класса модели, например $results = User::model()->findAll($criteria);, тогда результат будет содержать только поля из таблицы пользователя, а не отношения '. Причина заключается в том, что при создании результирующие объекты модели не существует поле, объявленное для отношения столбцов в модели .. Так что вам нужно для создания полей в модели ..

в вашем случае nationality, status

Просто напишите в вашей модели

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

Смежные вопросы