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: lowpass <zijn.digital@xxxxxxxxx>
Date: Sat, 1 Jun 2013 13:01:40 -0400
Delivery-date: Sat, 01 Jun 2013 13:01:56 -0400
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20120806; h=x-beenthere:mime-version:in-reply-to:references:date:message-id :subject:from:to:x-original-sender:x-original-authentication-results :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=m+Ub3nCuXXXs1RehEXsaoWFjdwTKV5pYQDnK7sWQx88=; b=EOX6MQwIESw69U2s3JLXB9I3CndTQB1TUaPvA5Ri+T7ZB6JAPv0HEI/z+OeE3TtMLL e7yhdsYxIE7pQtZatngiAWVyYBWPXyeHNLoHZ3Mf/0XfaViDJIa/t7HOSJHNDsOX4a48 urGyUujqTnyzPURDitpguHPAFe+L1jND/u1iwESDtImHYowAtjuu165RMdXVrUgl+uWc OvzHphNaWHTTqngq56PjuI/N93WMaCb4PTwOceA6Z58BO9sjbJm8HVafaqyvx+DiIK10 uQKEK6O4AIoaoQoQ/Usfp2PW/3i57wyPvKJv6EoDYujitfa+7hM9UWxjVP1RgLQD5NUZ f7/A==
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-beenthere:mime-version:in-reply-to:references:date:message-id :subject:from:to:x-original-sender:x-original-authentication-results :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=m+Ub3nCuXXXs1RehEXsaoWFjdwTKV5pYQDnK7sWQx88=; b=T8UF5tbPzLHv0TqIuIpIiNW2A7F9lw85146ImjOsIz+5ittjJaq2RA5vmQdNpjWlUL Sl4gEFWieA8UPlsiDg3abK9ByrCRmUe+b0aMod9V07LC8m8JlYjSXGiFHjy9CG7jDqJQ yI0t0W1Mw77szXo+Dyi1RquAp4dr2e+gnfzmluG3RConi4lNbklLg76zUMAOpYWDj1ZV Ml6QbF+nYo64GbP6Ehy48d1C1nKE3XSygi95XAb5m7l615yHGJfetzZUIdT8ZWnJM9jf Yz/EGA/PZp7PQY33J6go8qZaFXl/Foz/628GwjQBugM5s4Am4cwxOyxFzV/joomARXWG yJDg==
Envelope-to: traductor@xxxxxxxxxxx
In-reply-to: <6ba16b55-5e3e-455f-8647-d84b0bab597b@googlegroups.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>
Reply-to: cake-php@xxxxxxxxxxxxxxxx
Sender: cake-php@xxxxxxxxxxxxxxxx
*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.kevin@xxxxxxxxx> 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+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.
>
>
>

-- 
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.


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.kevin@xxxxxxxxx> 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+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.
>
>
>

-- 
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>