ayuda SQL Query

Hola tengo 3 dias trabajando con Yii Framework (es el primer framework que pruebo) y me ha gustado mucho, ahora tengo una duda para generar un campo la vista.

tengo dos tablas en mi base de datos, platillos y postres.

platillos:

id

descripcion

id_postre

postres:

id

descripcion

Lo que pretendo es desplegar un listado de platillos con la descripcion de su postre, pero no he podido encontrar donde modificar el SQL-Query.

alguna sugerencia les agradeceria mucho.

saludos

Lo que haría sería:

  1. En /models/Postre

public function getDescripcion(){

return $this->descripcion;

}

  1. En /models/Platillos

public function getDescripcion() u otro nombre para no confundirte{

return Postre::model()->findByPk($this->id_postre)->Descripcion;

}

Ya que estás acá, cambiá la etiqueta de ‘id_postre’ por =>‘Postre’

  1. En /views/platillos/_view

<?php echo CHtml::encode($data->getAttributeLabel(‘id_platillo’)); ?>:</b>

<?php echo CHtml::encode($data->Descripcion); ?>

Espero haberte entendido y solucionado tu problema.

Saludos!

Muchas gracias era justo lo que buscaba. :D

Me alegro!

Saludos.

Puedes hacer uso de las relaciones.

En el modelo Platillos defines la siguiente relación:




// models/Platillos

public function relations() {

    	return array(

        	'postre' => array(self::BELONGS_TO, 'Postres, 'id_postre'),

    	);

	}



Luego en Postres




// models/Postres

public function relations() {

    	return array(

        	'platillos' => array(self::HAS_MANY, 'Platillos, 'id_postre'),

    	);

	}



Posteriormente podrás acceder en cualquiera de los dos sentidos con




// La descripción del postre de un platillo

$platillo = Platillos::model()->findByPk($pk);

echo CHtml::encode($platillo->postre->descripcion); //accede a la descripción del postre correspondiente al platillo


// Todos los platillos que tienen el mismo postre

$postre = Postres::model()->findByPk($pk);

$postre->platillos;

// acá puedes incluso hacer un foreach para obtener atributos de cada uno de los platillos

foreach($postre->platillos as $platillo) {

    	echo CHtml::encode($platillo->descripcion);

}



Si modelas tu base de datos con una correcta entidad referencial (declarando claves foraneas) Yii captura automáticamente estas relaciones y te ahorras el hacerlas tú. A lo mucho tendrás que cambiarles de nombre, porque suele haber problemas con los plurales en tablas con nombres en español.

PS: Para que funcione lo descrito en el párrafo anterior debes usar un motor de base de datos que soporte claves foraneas, como InnoDB.

Jajaja que dormido estaba cuando contesté.

J D, definitivamente, usa relaciones.

Cuando dije




2) En /models/Platillos

public function getDescripcion() u otro nombre para no confundirte{

return Postre::model()->findByPk($this->id_postre)->Descripcion;

}



Quedaría:




public function getDescripcion(){

return $this->postre->Descripcion;

}