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..
Ora nel tuo caso ciò che sta accadendo è che si sta cercando di scrivere colonna di qualche relazione a selezionare, che sarà lì in selezionare anche senza scriverlo, ma dato che non esiste una variabile corrispondente per mappare questo valore yii sta generando un errore ..
Quindi, per prima cosa, se è necessario il nome utente di auther in risposta, è possibile ottenerlo per chiamata di relazione, che non sarà un database chiama, e tu non devi d per scrivere scegliere ..
E se volete chiamare il nome utente come parte del modello di posta unica u hanno avuto modo di dichiararlo come una proprietà in modello, quindi specificare alias nel scegliere ..
$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;
Ora non getterà l'errore, ed è possibile accedere il nome utente da entrambi i modi .. $post->auther_username
, e $post->auther->username
fonte
2012-07-21 17:49:01
non sto accusando, ma se hai downvoted, per favore spiega perché? perché non vedo nulla di sbagliato nel mio metodo, (né nel tuo). –
quindi, sembra questo è ciò che op stava cercando, +1 –
Funziona. Grazie mille . –