¿Cómo puedo obtener el primer modelo de una lista de modelos?

Hola, lo que pasa es que en el controlador tengo lo siguiente:


$models=Documento::model()->findAll($criteria);

Y en la vista si yo uso un foreach($models as $model) pues voy a poder imprimir todos los modelos pero el problema es que hay una parte de la vista donde solo necesito obtener el primer modelo entonces yo supuse que eso es un arreglo de modelos y que podría usarlo simplemente así: "$models[0]" pero me sale un error que dice que el indice cero no existe.

Alguien sabe como podría obtener solo el primer modelo?

Gracias!

usa find en vez de findall

mira esto http://www.yiiframework.com/doc/guide/database.ar#reading-record

Hola Horacio, tienes razón… lo que pasa es que yo quiero aprovechar el findAll() que me toca hacer en esa misma vista para mostrar mas abajo ese listado, es que me imagino que debe haber forma de obtener ese modelo de una lista de modelos y así no tengo que hacer findAll() y find() sino que solo con el findAll() poder tener ambas cosas.

Muchas gracias por tu respuesta.

array_shift() Removes the first element from an array, and returns the value of the removed element

Gracias Sebas!, mira que probé y me sale un error que dice "Indirect modification of overloaded property Advert::$relAdvImg has no effect" y es el mismo error que sale cuando trato de usar cualquiera de las funciones de array de php para sacar ese modelo de la lista de modelos.

Hola…

Simplemente con $models[0] tiene que funcionar…

¿Estás seguro que la búsqueda te está trayendo algo?

Hola Luciano, tienes razón, con $models[0] me funciona para el ejemplo que coloqué en el post, lo que pasa fue que usé un ejemplo sencillo para poder explicar mas fácil el problema pero ya veo que el problema solo pasa en el ejemplo especifico que tengo aquí… por lo tanto voy a tratar de explicarlo de una forma sencilla:

Resulta que lo que me pasa específicamente es que hice una consulta de unas noticias que están relacionadas con imágenes, entonces lo que obtengo es un listado de modelos de noticias y cada modelo de noticia con un listado de modelos de imágenes, y entonces necesito mostrar en pantalla un listado de las noticias y un preview de la primera imagen de ese listado que viene asociado.

Yo solo tuve que obtener el listado de noticias “$modelsNews=News::model()->with(‘relNewsImages’)->findAll()” y mencionando la relación con la tabla de imágenes automáticamente Yii me incluyó el listado de imágenes de cada noticia, entonces al parecer para yo obtener el primer registro de noticias no hay problema ya que lo puedo obtener con “$modelsNews[0]”, pero si yo quiero obtener la primera imagen asociada a la primera noticia como debo hacer?

Nota: Yo se que puedo obtener estos datos que necesito de otra forma, lo que pasa es que quiero aprender mas y por eso quiero saber como hay que hacerlo para que funcione de esta forma porque así tendría que hacer menos consultas.

De ante mano mil gracias!

Simplemente necesitás usar




$modelsNews[0]->relNewsImages[0]; // o como sea el nombre de la relación



Espero que te sirva.

Hola Luciano, muchas gracias, lo que tu dices es muy cierto… jeje… lo mas curioso es que yo ya lo había probado así y no me quería funcionar pero cuando tu escribiste el post me dio por volver a probar y ahora si me funciona… lo cual es muy extraño y lo único que se me ocurre es un problema de caché aunque yo recuerdo que esa vez yo probé como en 4 navegadores y aun así no me quería funcionar.

A alguien le ha pasado algo similar?

Yo acabo de colocar un posten el foro para tratar de encontrar una solución, la url es:

http://www.yiiframework.com/forum/index.php?/topic/7103-posible-problema-con-la-cache-que-maneja-yii/