2015-02-16 6 views
2

У меня есть запрос следующим образом:Соединение слева с 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» не определен.

Какая ошибка в запросе? Пожалуйста, помогите.

ответ

0

Вы должны использовать 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; 
Смежные вопросы