findAllBySql

Hola que tal a todos los usuarios de Yii Framework.

Tengo un problema, no se si me puedan ayudar, la situacion es esta:

Quiero obtener los datos de huespedes accsediendo desde otra tabla (RelationGuest)

La consulta seria algo asi:


SELECT * FROM guestsRelationships 

JOIN guests ON guests.idGuest = guestsRelationships.idGuest

WHERE idReservation = :idReservation

Lo que quiero hacer es obtener un array de los huespedes que estan en esa reservacion por lo que en mi modelo de guestsRelationships tengo:




protected static $_relationsreservation = array();


public static function loadRelationGuest($idReservation)

	{

		self::$_relationsreservation = array();


		//$model = self::model()->findAllBySql('SELECT * FROM guestsRelationships JOIN guests ON guests.idGuest = guestsRelationships.idGuest WHERE idReservation = :idReservation', array(':idReservation' => $idReservation ));

		

		

		

		foreach ($model as $model)

			self::$_relationsreservation[$model->idGuest] = $model->guests->name;


		return self::$_relationsreservation;

	}






En la vista instancio el modulo y mando llamar la funcion:




<?php print_r(Guests::loadGuestRelationships($modelBlock->idReservation)); ?>	



Lo que no logro obtener son los datos del huesped con la iteracion de la consulta. Por favor alguien que me pueda ayudar a solucionar este problema, saludos…

es que en tu modelo guestsRelationships no existe el modelo guests, es decir el hace la búsqueda pero como lo que devuelve esa consulta son dos tablas, osea el modelo guestsRelationships unido con el modelo guests, pero como lo estas haciendo desde el modelo guestsRelationships el guests no existe y los datos simplemente como que se pierden digo yo, entonces te tocaría crear un atributo en tu modelo guestsRelationships del modelo guests(supongo), es lo que yo supongo, por que te digo esto, por que en un situación similar hice una búsqueda que me devolvía todos los campos de una tabla mas uno que genere al unir dos campos de esa tabla, entonces cree un atributo en el modelo con el nombre del campo que genere para que este guardara la información generada por la consulta en ese atributo, espero que me ayas comprendido, no estoy seguro pero el asunto es por allí

Hola pipook, muchas gracias. Tiene logica tu comentario asi que voy a trabajar con los atributos de los modelos para entenderlo mas. Saludos…