Hola acaba de cuestionarmejor manera de obtener datos relacionados de modelos en yü y volver JSON
im trabajando en una aplicación de descanso para un proyecto que está utilizando SproutCore en la parte delantera.
Mi pregunta es realmente ¿cuál es la forma más efectiva de obtener datos de un modelo con otros modelos relacionados cuando se necesita devolver json? Leí ayer que se recomienda trabajar la capa DAO cuando se trabaja con matrices, por lo que para mi ejemplo esto es lo que tengo hasta ahora.
Tengo una lista de clientes, cada cliente tiene marcas HAS_MANY y cada marca tiene proyectos HAS_MANY. No obtener una gama muy bien formado parte posterior de clientes con arreglan sus marcas Heres lo que tengo
$clients = Yii::app()->db->createCommand('select client.* from client where client.status = 1')->queryAll();
foreach($clients as $ckey => $client)
{
$clients[$ckey] = $client;
$brand_ids = Yii::app()->db->createCommand('select brand.id as brand_id, brand.client_id as b_client_id from brand where brand.client_id ='.$client['id'])->queryAll();
foreach($brand_ids as $bkey => $brand_id)
{
$clients[$ckey]['brands'][] = $brand_id['brand_id'];
}
}
Esto está regresando lo que quiero hasta ahora, pero es la manera más eficaz de lograr lo que im después ??
Si no tiene el objeto CActiveRecord para su tabla 'client', hágalo primero (consulte: http://www.yiiframework.com/doc/guide/1.1/es/database.ar). Y después de eso, podrá obtener datos simples como: '$ clients = Client :: model() -> with ('brand') -> findByAttributes (array ('status' => 1));' –
Como voy a estar volviendo json, ¿no es mejor trabajar con la capa DAO que realizar qurios usando ar? Devuelve muchísima más información de la que necesito. así que cuando llegué a codificar la matriz, terminé con más objetos de los que necesito devolver? –
Si entendí correcto que: 1) Puede escribir las columnas que desea seleccionar (lanzar clase de modelo 'Cliente' y hacer relación a' Marca') 2) a continuación, hacer la declaración 'foreach' después de seleccionar estos 2.1) y conviértalo en json como lo hizo en su ejemplo de pregunta / . Todavía lo recomiendo primero para crear modelos para tablas. Lo hago primero y si tuve algunos cambios globales sobre la tabla, cambio solo mi clase de modelo. –