what with
does is eager loading
..that means the relation's data will also loaded from database alongwith, and when when u'll call the relation, there won't be a actual query..
What select does is it selects it from database and maps it to model variable..
Теперь в вашем случае, что происходит это вы пытаетесь написать колонку какое-то отношение в в выберите, который будет там выбрать даже без написания его, но так как нет соответствующей переменной для отображения этого значения yii выбрасывает ошибку.
Итак, если вам нужно указать имя пользователя в ответ в качестве ответа, вы можете получить его по вызову отношения, которое не будет базой данных звоните, и ты не хочешь d писать отборный ..
А если и хотят назвать имя пользователя как часть почтовой модели только у попавшей объявить его как свойство в модели, а затем указать псевдоним в выберите ..
$criteria = new CDbCriteria;
$criteria->with='author';
$criteria->select='author.username as auther_username';
$dataProvider=new CActiveDataProvider('Post', array(
'criteria' => $criteria,
));
var_dump($dataProvider->getData());
and in your Post model declare..
public $auther_username;
Теперь он не будет бросать ошибку, и вы можете получить доступ к имени пользователя обоими способами .. $post->auther_username
и $post->auther->username
Я не обвиняю, но если вы занижены, пожалуйста, объясните почему? потому что я не вижу ничего плохого в своем методе (ни в вашем). –
, так что, похоже, это то, что искали, искали, +1 –
Он работает. Спасибо большое . –