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..
En su caso lo que está sucediendo es que estamos tratando de escribir la columna de alguna relación en la selección, que estará allí en selecto incluso sin escribirlo, pero como no hay una variable correspondiente para mapear este valor, yii está arrojando un error.
Primero, si necesita el nombre de usuario de auther en respuesta, puede obtenerlo por llamada de relación, que no será una base de datos llama, y no necesitas d para escribir elegir ..
Y si quieres llamar el nombre de usuario como parte del modelo de puestos de trabajo sólo u han llegado a declarar como una propiedad en el modelo, y luego especificar alias en elegir ..
$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;
Ahora bien, no va a tirar de error, y se puede acceder mediante el nombre de usuario en ambos sentidos .. $post->auther_username
y $post->auther->username
, no lo acuso, pero si votó negativamente, explique por qué? porque no veo nada malo en mi método (ni en el tuyo). –
entonces, parece que esto es lo que estaba buscando, +1 –
Funciona. Muchas gracias . –