Yii Framework Forum: Seleccionar Los Campos En Un Findallbyattributes - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Seleccionar Los Campos En Un Findallbyattributes Rate Topic: -----

#1 User is offline   alexd2 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 12-September 12

Posted 13 November 2012 - 11:09 AM

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
0

#2 User is offline   sebas 

  • Advanced Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 494
  • Joined: 28-October 08
  • Location:Buenos Aires, Argentina

Posted 13 November 2012 - 11:40 AM

Si, podés hacerlo así:

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


Espero que te sirva.

Saludos,
0

#3 User is offline   alexd2 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 12-September 12

Posted 13 November 2012 - 11:56 AM

View Postsebas, on 13 November 2012 - 11:40 AM, said:

Si, podés hacerlo así:

MyModel::model()->findAllByAttributes(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
0

#4 User is offline   robregonm 

  • Expert Yii Developer
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 591
  • Joined: 30-July 09
  • Location:Colombia

Posted 13 November 2012 - 12:22 PM

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,... ;)
Ricardo Obregón

YiiFramework en Español - http://yiiframework.co/ - http://yiiframeworkenespanol.org/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx 1.4, MySQL(MariaDB & PerconaDB), PostgreSQL 9, Yii 2.0-dev.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

#5 User is offline   robregonm 

  • Expert Yii Developer
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 591
  • Joined: 30-July 09
  • Location:Colombia

Posted 13 November 2012 - 12:25 PM

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
Ricardo Obregón

YiiFramework en Español - http://yiiframework.co/ - http://yiiframeworkenespanol.org/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx 1.4, MySQL(MariaDB & PerconaDB), PostgreSQL 9, Yii 2.0-dev.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

#6 User is offline   alexd2 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 12-September 12

Posted 14 November 2012 - 06:12 AM

View Postrobregonm, on 13 November 2012 - 12:25 PM, said:

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
0

#7 User is offline   robregonm 

  • Expert Yii Developer
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 591
  • Joined: 30-July 09
  • Location:Colombia

Posted 14 November 2012 - 01:12 PM

No se debe hacer, aunque se puede (y es permitido):
$this->model()->find...



Sí se debe:
$this->find...



En otras palabras, "model" sobra
Ricardo Obregón

YiiFramework en Español - http://yiiframework.co/ - http://yiiframeworkenespanol.org/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx 1.4, MySQL(MariaDB & PerconaDB), PostgreSQL 9, Yii 2.0-dev.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

#8 User is offline   alexd2 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 12-September 12

Posted 15 November 2012 - 07:48 AM

View Postrobregonm, on 14 November 2012 - 01:12 PM, said:

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.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users