cake-php
[Arriba] [Todas las Listas]

Re: Es allí una manera de conseguir un 'tiene muchos' la relación dej

To: cake-php@xxxxxxxxxxxxxxxx
Subject: Re: Es allí una manera de conseguir un 'tiene muchos' la relación dejó unida sin forzar el unir tal que puedo conseguir un contar de la mesa de niño?
From: heavyKevy <arnett.kevin@xxxxxxxxx>
Date: Mon, 3 Jun 2013 01:20:35 -0700 (PDT)
Delivery-date: Mon, 03 Jun 2013 04:20:48 -0400
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20120806; h=x-beenthere:date:from:to:message-id:in-reply-to:references:subject :mime-version:x-original-sender:reply-to:precedence:mailing-list :list-id:x-google-group-id:list-post:list-help:list-archive:sender :list-subscribe:list-unsubscribe:content-type; bh=m7lqawxkl3848HnlfRqXPp+qMs57WxbLQtYb5k0V+jk=; b=n5k2eV3othyR9wZo3RmLXuzaWGAH59craYRM16kVorgAmgtbjlx6x4FkB5GBjTDTTb /9I7JAJbp2SFXc/0B0GISrm7dXEQOi0P3JQLGpMQ5o/U4RnC5qCeG8eU1b0cIO0uUy5e VdE8DIRgfh8CbcsRcnwkecix67xSA2Q8vKb36XJ7BKkwqIdbz4ngVwaDnKTnoZQqTI/N mwx17P4LJ4dWi1cX5MFIF7Fm5DkdqJwdt7TAza+Bhj4wh+PpLtDbtn5QkZlaIpZkmqTS tthhF/VsGvCBEZXZ+/bci9jF2a37rnArCke49xU8PgiQddw9kIeimmaV9h4e5FXj/zq9 nMKw==
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-beenthere:date:from:to:message-id:in-reply-to:references:subject :mime-version:x-original-sender:reply-to:precedence:mailing-list :list-id:x-google-group-id:list-post:list-help:list-archive:sender :list-subscribe:list-unsubscribe:content-type; bh=m7lqawxkl3848HnlfRqXPp+qMs57WxbLQtYb5k0V+jk=; b=U6GKREMessIsyBcRl30q9ESqsklJOw3ya/AcpWiHN2NfpihTOO3NGpd+es5ShuFgdZ pmgNE4U9lDnp/ZVy2v0ctSUr4tifCEWc+IH2oJxCKFK/8if5rkiOBsjXNqbk3z4OY6zs FZ2qBUQoWILFw3Z46wVY4dAl0K115NNsXcoetBKnT6J+grZnpmp4XXbHhdxFBmfbvstM FmoaNNQa/tJYGP+kYDSwId01d0e/UuSfykyP0B9cTGDA4JjYUZDx0oq1KEmHkIi4QEyH +xOnNzNV9VHy4Oky3YsFZ+Drciutx27B2+kWhnkrGnsm7ZbfKW+VH7sG7bobgq4VQKV9 U2yw==
Envelope-to: traductor@xxxxxxxxxxx
In-reply-to: <CAKYtSzvmgOYq1AdSHsEixD3H1zs7C=dZ5uh34F=0G4vRysm5jQ@mail.gmail.com>
List-archive: <http://groups.google.com/group/cake-php?hl=en>
List-help: <http://groups.google.com/support/?hl=en>, <mailto:cake-php+help@googlegroups.com>
List-id: <cake-php.googlegroups.com>
List-post: <http://groups.google.com/group/cake-php/post?hl=en>, <mailto:cake-php@googlegroups.com>
List-subscribe: <http://groups.google.com/group/cake-php/subscribe?hl=en>, <mailto:cake-php+subscribe@googlegroups.com>
List-unsubscribe: <http://groups.google.com/group/cake-php/subscribe?hl=en>, <mailto:googlegroups-manage+1003367825667+unsubscribe@googlegroups.com>
Mailing-list: list cake-php@xxxxxxxxxxxxxxxx; contact cake-php+owners@xxxxxxxxxxxxxxxx
References: <6ba16b55-5e3e-455f-8647-d84b0bab597b@googlegroups.com> <CAKYtSzvmgOYq1AdSHsEixD3H1zs7C=dZ5uh34F=0G4vRysm5jQ@mail.gmail.com>
Reply-to: cake-php@xxxxxxxxxxxxxxxx
Sender: cake-php@xxxxxxxxxxxxxxxx
*Thank Tú *Cricket, probaré y mirada dentro al *counterCache.

En domingo, junio 2, 2013 12:01:40 SOY *UTC+7, *cricket escribió:
>
> *ContainableBehavior no trabaja como aquello, desafortunadamente. Es una adición 
> realmente buena al *toolbox, aun así en el coste de las consultas extras. (Lo utilizo mucho, pero sólo dónde puedo *cache los resultados.) Qué tendrías que ser 
> hacer tampoco está añadiendo el 'une' opción, o utilizando *counterCache. Si todo 
> quieres es un contar de los comentarios cuándo listando vuestros correos entonces el último 
> es una solución buena.
>
>
> *http://Libro.*cakephp.*org/2.0/*en/asociaciones/de modelos-enlazando-modelos-junto.*html#*belongsto
>
>
> En *Wed, mayo 29, 2013 en 5:39 AM, *heavyKevy <arnett...@xxxxxxxxx<*javascript:>
> > escribió:
>
>> estoy intentando extender el *blog ejemplo donde mis Correos pertenecen a los Usuarios y Los 
>> Correos tiene muchos comentarios y para conseguir una  consulta donde los comentarios quedan 
>> unidos a la consulta tal que puedo conseguir un comentario cuenta para  cada correo 
>> para listar fuera de en mi página de índice.  
>>
>>  Según la documentación, tendría que ser capaz de trabajar, pero después de probar 
>> *nearly todo podría encontrar en la documentación que incluye 
>> cambiando *recursive a 1 y utilizando contiene, el *paginate llamada para encontrar_todos 
>> residuos quietos para incluir comentarios en el unir listar tal que consigo un error 
>> que los comentarios.*id No fue encontrado.
>>
>> Cuándo consigo librado del contar, campos, y contener y poner *recursive a 1, 
>> genera 2 consultas separadas, el primer izquierdo uniendo los correos con los 
>> usuarios,  el segundo *querying los comentarios.
>>
>>
>> Es allí algo falto?
>>
>> Esto es la Consulta estoy esperando:
>>
>> SELECCIONA `Correo`.`*id`, `Correo`.`Usuario_*id`, `Correo`.`Título`, `Correo`.`Correo`, 
>> `Usuario`.`*id`, `Usuario`.`Función`, `Usuario`.`*username`, `Usuario`.`Contraseña`, 
>> `Usuario`.`*email`, `Usuario`.`Avatar`, `Usuario`.`Primer_nombre`, `Usuario`.`Último_nombre`, 
>> `Usuario`.`Creado`, CUENTA(`Comentario`.`*id`) Comentarios DE `*blog`.`Correos` CUANDO 
>> `el Correo` A la izquierda UNE `*blog`.`Comentarios` CUANDO `Comentario` EN (`Comentario`.`Correo_*id` = 
>> `Correo`.`*id`) A la izquierda UNIR `*blog`.`Usuarios` CUANDO `Usuario` EN (`Correo`.`Usuario_*id` = 
>> `Usuario`.`*id`) DÓNDE 1 = 1 GRUPO POR `Comentario`.`Correo_*id`;
>>
>> Esto es lo que es #producir:
>> SELECCIONA `Correo`.`*id`, `Correo`.`Usuario_*id`, `Correo`.`Título`, `Correo`.`Correo`, 
>> `Usuario`.`*id`, `Usuario`.`Función`, `Usuario`.`*username`, `Usuario`.`Contraseña`, 
>> `Usuario`.`*email`, `Usuario`.`Avatar`, `Usuario`.`Primer_nombre`, `Usuario`.`Último_nombre`, 
>> `Usuario`.`Creado`, CUENTA(`Comentario`.`*id`) Comentarios DE `*blog`.`Correos` CUANDO 
>> `el Correo` A la izquierda UNE `*blog`.`Usuarios` CUANDO `Usuario` EN (`Correo`.`Usuario_*id` = 
>> `Usuario`.`*id`) DÓNDE 1 = 1 GRUPO POR `Comentario`.`Correo_*id`;
>>
>> utilizando este código:
>>         $esto->Cuestión->*recursive = 1;
>>         $esto->conjunto('*userId',    $esto->*Auth->usuario('*id'));
>>         
>>         $esto->Cuestión->*Behaviors->carga('*Containable', 
>> variedad('*autoFields' => falso));
>>         
>>         $esto->*paginate =variedad(
>>                 'campos' => variedad('Cuestión.*id', 'Cuestión.Usuario_*id', 
>> 'Cuestión.Título', 'Cuestión.Cuestión',
>>                         'Usuario.*id', 'Usuario.Función', 'Usuario.*username', 
>> 'Usuario.Contraseña', 'Usuario.*email', 'Usuario.Avatar',
>>                         'Usuario.Primer_nombre', 'Usuario.Último_nombre', 
>> 'Usuario.Creado', 'CONTAR(Comentario.*id)  Respuestas'
>>                 ),
>>                 'grupo' => 'Comentario.Cuestión_*id',
>>                 'contiene' => variedad('Usuario','Comentario.*id'));
>>         $Esto->conjunto('cuestiones', $esto->*paginate());
>>
>>  
>>  Es la manera única de conseguirlo para trabajar sin utilizar mi SQL propio para especificar 
>> todos los campos y forzar el une?
>>  Añadiendo Une a las opciones, puedo forzar el unir y trabaja gusta quiero, pero tener que no lo ser capaz de imaginar fuera del une por él con el 
>> contener especificar la mesa de comentario?
>>
>> Código para opciones con forzado Unir para la mesa de comentarios:
>>         $esto->*paginate =variedad(
>>                 'campos' => variedad('Cuestión.*id', 'Cuestión.Usuario_*id', 
>> 'Cuestión.Título', 'Cuestión.Cuestión',
>>                         'Usuario.*id', 'Usuario.Función', 'Usuario.*username', 
>> 'Usuario.Contraseña', 'Usuario.*email', 'Usuario.Avatar',
>>                         'Usuario.Primer_nombre', 'Usuario.Último_nombre', 
>> 'Usuario.Creado', 'CONTAR(Comentario.*id)  Respuestas'
>>                 ),
>>                 'grupo' => 'Comentario.Cuestión_*id',
>>                 'une' => variedad(variedad(
>>                         'mesa'=>'Comentarios', '*alias'=>'Comentario', 
>> 'tipo'=>'IZQUIERDO',
>>                         'condiciones'=>variedad('Comentario.Cuestión_*id = 
>> Cuestión.*id'))) ,
>>                 'contiene' => variedad('Usuario','Comentario.*id'));
>>
>>  -- 
>> Gustarnos en *FaceBook *https://www.facebook.com/*CakePHP
>> nos Encuentra en *Twitter *http://*twitter.*com/*CakePHP
>>  
>> --- 
>> Recibiste este mensaje porque eres *subscribed al *Google Grupos 
>> "*CakePHP" grupo.
>> A *unsubscribe de este grupo y la parón que recibe *emails de él, enviar un 
>> *email a pastel-*php+u...@xxxxxxxxxxxxxxxx <*javascript:>.
>> A correo a este grupo, envía *email a cake...@xxxxxxxxxxxxxxxx<*javascript:>
>> .
>> Visita este grupo en *http://grupos.*google.*com/Pastel/de grupo-*php?*hl=*en.
>> Para más opciones, visita *https://grupos.*google.*com/Los Grupos/optan_fuera.
>>  
>>  
>>
>
>

-- 
Gustarnos en *FaceBook *https://www.facebook.com/*CakePHP
nos Encuentra en *Twitter *http://*twitter.*com/*CakePHP

--- 
Recibiste este mensaje porque eres *subscribed al *Google Grupos "*CakePHP" grupo.
A *unsubscribe de este grupo y la parón que recibe *emails de él, enviar un *email a pastel-*php+unsubscribe@xxxxxxxxxxxxxxxx.
A correo a este grupo, envía *email a pastel-php@xxxxxxxxxxxxxxxx.
Visita este grupo en *http://grupos.*google.*com/Pastel/de grupo-*php?*hl=*en.
Para más opciones, visita *https://grupos.*google.*com/Los Grupos/optan_fuera.


Thank you Cricket, I will try and look in to the counterCache.

On Sunday, June 2, 2013 12:01:40 AM UTC+7, cricket wrote:
>
> ContainableBehavior doesn't work like that, unfortunately. It's a really 
> good addition to the toolbox, though at the cost of the extra queries. (I 
> use it a lot, but only where I can cache the results.) What you should be 
> doing is either adding the 'joins' option, or using counterCache. If all 
> you want is a count of the comments when listing your posts then the latter 
> is a good solution.
>
>
> http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#belongsto
>
>
> On Wed, May 29, 2013 at 5:39 AM, heavyKevy <arnett...@xxxxxxxxx<javascript:>
> > wrote:
>
>> I am trying to extend the blog example where my Posts belong to Users and 
>> Posts has many comments and to get a  query where the comments are left 
>> joined into the query such that I can get a comment count for  each post 
>> for listing out in my index page.  
>>
>>  According to the documentation, it should be able to work, but after 
>> trying nearly everything I could find in the documentation including 
>> changing recursive to 1 and using contain, the paginate call to find_all 
>> still refuses to include comments in the join list such that I get an error 
>> that the comments.id was not found.
>>
>> When I get rid of the count, fields, and contain and set recursive to 1, 
>> it generates 2 separate queries, the first left joining the posts with the 
>> users,  the second querying the comments.
>>
>>
>> Is there something I am missing?
>>
>> This is the Query I am expecting:
>>
>> SELECT `Post`.`id`, `Post`.`user_id`, `Post`.`title`, `Post`.`post`, 
>> `User`.`id`, `User`.`role`, `User`.`username`, `User`.`password`, 
>> `User`.`email`, `User`.`Avatar`, `User`.`first_name`, `User`.`last_name`, 
>> `User`.`created`, COUNT(`Comment`.`id`) comments FROM `blog`.`Posts` AS 
>> `Post` LEFT JOIN `blog`.`Comments` AS `Comment` ON (`Comment`.`Post_id` = 
>> `Post`.`id`) LEFT JOIN `blog`.`users` AS `User` ON (`Post`.`user_id` = 
>> `User`.`id`) WHERE 1 = 1 GROUP BY `Comment`.`post_id`;
>>
>> This is what is produced:
>> SELECT `Post`.`id`, `Post`.`user_id`, `Post`.`title`, `Post`.`post`, 
>> `User`.`id`, `User`.`role`, `User`.`username`, `User`.`password`, 
>> `User`.`email`, `User`.`Avatar`, `User`.`first_name`, `User`.`last_name`, 
>> `User`.`created`, COUNT(`Comment`.`id`) comments FROM `blog`.`Posts` AS 
>> `Post` LEFT JOIN `blog`.`users` AS `User` ON (`Post`.`user_id` = 
>> `User`.`id`) WHERE 1 = 1 GROUP BY `Comment`.`post_id`;
>>
>> using this code:
>>         $this->Question->recursive = 1;
>>         $this->set('userId',    $this->Auth->user('id'));
>>         
>>         $this->Question->Behaviors->load('Containable', 
>> array('autoFields' => false));
>>         
>>         $this->paginate =array(
>>                 'fields' => array('Question.id', 'Question.user_id', 
>> 'Question.title', 'Question.question',
>>                         'User.id', 'User.role', 'User.username', 
>> 'User.password', 'User.email', 'User.Avatar',
>>                         'User.first_name', 'User.last_name', 
>> 'User.created', 'COUNT(Comment.id)  answers'
>>                 ),
>>                 'group' => 'Comment.question_id',
>>                 'contain' => array('User','Comment.id'));
>>         $this->set('questions', $this->paginate());
>>
>>  
>>  Is the only way to get it to work without using my own SQL to specify 
>> all the fields and force the joins?
>>  Adding Joins to the options, I can force the join and it works like I 
>> want, but shouldn't it be able to figure out the joins by itself with the 
>> contain specifying the comment table?
>>
>> Code for options with forced Join for the comments table:
>>         $this->paginate =array(
>>                 'fields' => array('Question.id', 'Question.user_id', 
>> 'Question.title', 'Question.question',
>>                         'User.id', 'User.role', 'User.username', 
>> 'User.password', 'User.email', 'User.Avatar',
>>                         'User.first_name', 'User.last_name', 
>> 'User.created', 'COUNT(Comment.id)  answers'
>>                 ),
>>                 'group' => 'Comment.question_id',
>>                 'joins' => array(array(
>>                         'table'=>'Comments', 'alias'=>'Comment', 
>> 'type'=>'LEFT',
>>                         'conditions'=>array('Comment.question_id = 
>> Question.id'))) ,
>>                 'contain' => array('User','Comment.id'));
>>
>>  -- 
>> Like Us on FaceBook https://www.facebook.com/CakePHP
>> Find us on Twitter http://twitter.com/CakePHP
>>  
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "CakePHP" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to cake-php+u...@xxxxxxxxxxxxxxxx <javascript:>.
>> To post to this group, send email to cake...@xxxxxxxxxxxxxxxx<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/cake-php?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>
>

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to cake-php@xxxxxxxxxxxxxxxx.
Visit this group at http://groups.google.com/group/cake-php?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


<Anterior por Tema] Tema Actual [Siguiente por Tema>