Seleccionar Los Campos En Un Findallbyattributes

Hola muy buenas a todos, tengo una duda y no se como hacerlo, se puede seleccionar que campos obtiene al realizar la llamada a findAllByAttributes

Por ejemplo en la tabla tengo id|nombre|edad|sexo|direccion y quiere que al realizar el findAllByAttributes me devuelva los campos id|nombre|sexo

Se puede con findAllByAttributes o debo usar otra.

Estoy usando esto que me devuelve todo pero falta lo que comento:




$id = 10;

$datos = $this->model()->findAllByAttributes(array('id'=>$id));



Saludos y gracias

Si, podés hacerlo así:




MyModel::model()->findAllByAttribute(array('id'=>$id), array('select'=>'id, name'));



Espero que te sirva.

Saludos,

Genial me funciono a la perfección, eres grande.

Muchas gracias por colaborar con la comunidad

Cabe agregar que si necesita solamente capturar un registro (cosa que noto al usar la condición array(‘id’=>$id)), entonces sería mejor hacer algo como:


$this->findByPk($id)

Lo cual veo con poco sentido :(

Pues asumiendo que estoy en el mismo modelo (lo cual también deduzco por el uso de $this) no veo por que "recapturar" los datos si ya están disponibles en el modelo actual.

De todas formas si se necesita capturar por id de OTRO registro, está bien,… ;)

Cabe anotar adicionalmente que no es usual usar la notación: $this->model() (lo cual es incorrecto aunque válido), y menos para cargar un registro o grupo de registros.

Es preferible usar la notación: MiModelo::model()->…

La única excepción a la regla es cuando necesito cargar otros registros de la misma tabla…

Por ejemplo, cargar los demás registros de la misma categoría del actual…

Para lo cual es parcialmente válido hacer algo del tipo:


$this->findAllByAttributes(array('categoria_id'=>$this->categoria_id));

Saludos

A lo mejor en el ejemplo me equivoque al poner id (en realidad era el campo sexo, sino por costumbre pongo id en los ejemplos)

Uso el $this->model() porque estoy dentro del modelo y era nuevo método que iba a llamar desde el controlador, no se si esta bien o no al estar dentro del modelo.

Saludos y muchas gracias

No se debe hacer, aunque se puede (y es permitido):




$this->model()->find...

Sí se debe:




$this->find...

En otras palabras, "model" sobra

Gracias por el consejo, siempre es aconsejable aplicar las buenas practicas.