Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/10/2010, 10:00
Avatar de mayid
mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: JOINS en CAKE

Hice un avance. Para que los JOINS funcionen, hay que setear la recursividad a -1:

$this->User->recursive = -1;

Sin embargo, aun no puedo obtener un buen resultado. Estoy confundido. Mi consulta es esta:
Código PHP:
Ver original
  1. $this->User->recursive = -1;   
  2.  
  3. $options['conditions'] = array(
  4.     'User.id' => $id
  5. );
  6. $options['joins'] = array(
  7.    
  8.     array(
  9.         'table' => 'users_words',
  10.         'alias' => 'UsersWord',
  11.         'type' => 'INNER',
  12.         'conditions' => array(
  13.             'User.id = UsersWord.user_id'
  14.         )
  15.     ),
  16.     array(
  17.         'table' => 'words',
  18.         'alias' => 'Word',
  19.         'type' => 'INNER',
  20.         'conditions' => array(
  21.             'UsersWord.word_id = Word.id'
  22.         ),
  23.                
  24.     )
  25. );
  26.  
  27. $user_relations = $this->User->find('all', $options);

Y el resultado es cualquier cosa:

Código PHP:
Ver original
  1. (
  2.     [0] => Array
  3.         (
  4.             [User] => Array
  5.                 (
  6.                     [id] => 1
  7.                     [username] => admin
  8.                     [password] => e714044c058d932bac9a63f7f00273dbce722794
  9.                     [email] => gperez@agendajoven.org.ar
  10.                     [photo] => anonimo.gif
  11.                 )
  12.  
  13.         )
  14.  
  15.     [1] => Array
  16.         (
  17.             [User] => Array
  18.                 (
  19.                     [id] => 1
  20.                     [username] => admin
  21.                     [password] => e714044c058d932bac9a63f7f00273dbce722794
  22.                     [email] => gperez@agendajoven.org.ar
  23.                     [photo] => anonimo.gif
  24.                 )
  25.  
  26.         )
  27.  
  28.     [2] => Array
  29.         (
  30.             [User] => Array
  31.                 (
  32.                     [id] => 1
  33.                     [username] => admin
  34.                     [password] => e714044c058d932bac9a63f7f00273dbce722794
  35.                     [email] => gperez@agendajoven.org.ar
  36.                     [photo] => anonimo.gif
  37.                 )
  38.  
  39.         )
  40.  
  41. )

Claramente estoy pidiendo un solo usuario. La consulta mysql que se imprime es esta:

Código PHP:
Ver original
  1. SELECT `User`.`id`, `User`.`username`, `User`.`password`, `User`.`email`, `User`.`photo` FROM `users` AS `User` INNER JOIN users_words AS `UsersWord` ON (`User`.`id` = `UsersWord`.`user_id`) INNER JOIN words AS `Word` ON (`UsersWord`.`word_id` = `Word`.`id`) WHERE `User`.`id` = 1