Estoy intentando realizar una consulta entre modelos relacionados mediante 
HABTM, los modelos son Estudiante, Representante y EstudiantesRepresentante 
(campos : id, estudiante_id, representante_id), quiero listar los 
representantes de un estudiante mediante el id del estudiante.

estoy utilizando la función find de la siguiente manera 

$this->Representante->find('all',
                                                array(
                                                        
 'conditions'=>'EstudiantesRepresentante.estudiante_id'=>$id,
                                                         'recursive'=>1,
                                                         'joins'=>array(
                                                                  
                                                                          
array(
                                                                            
        'table' => 'estudiantes_representantes',
                                                                            
        'alias' => 'EstudiantesRepresentante',
                                                                            
        'type' => 'INNER',
                                                                            
        'conditions' => array(
                                                                            
                       'Representante.id 
= EstudiantesRepresentante.representante_id',
                                                                            
            )
                                                                            
    )
         
                                                                  )
                                                          )
                                           );
hasta aquí todo perfecto porque me trae la data referente al representante 
y al estudiante. Ahora mi pregunta: Como puedo traer los datos referente al 
Estudiante, es decir, los datos de los modelos con quien este se relaciona, 
porque hace "recursive" -1 en cuanto al Estudiante ?, por otra parte yo 
puedo hacer esto (joins anidados):

$this->Representante->find('all',
                                                array(
                                                        
 'conditions'=>'EstudiantesRepresentante.estudiante_id'=>$id,
                                                         'recursive'=>1,
                                                         'joins'=>array(
                                                                  
                                                                          
array(
                                                                            
        'table' => 'estudiantes_representantes',
                                                                            
        'alias' => 'EstudiantesRepresentante',
                                                                            
        'type' => 'INNER',
                                                                            
        'conditions' => array(
                                                                            
                       'Representante.id 
= EstudiantesRepresentante.representante_id',
                                                                            
            ),
                                                                            
         'joins'=> array(
                                                                            
                                  array(
                                                                            
                                                  'table' => 
'estudiantes_representantes',
                                                                            
                                                  'alias' => 
'EstudiantesRepresentante',
                                                                            
                                                  'type' => 'INNER',
                                                                            
                                                  'conditions' => array(
                                                                            
                                                                    
 'Representante.id = EstudiantesRepresentante.representante_id',
                                                                            
                                                       ),     
                                                                            
                                          )
                                                                            
                              ),
                                                                            
         
                                                                            
    )
         
                                                                  )
                                                          )
                                           );


Representante.php

class Representante extends AppModel {
    public $name       = 'Representante';
public $belongsTo = array(
        'Vinculo',
'Nacionalidad'
    );
    public $hasAndBelongsToMany = array(
        'Estudiante' =>
            array(
                'className'              => 'Estudiante',
                'joinTable'              => 'estudiantes_representantes',
                'foreignKey'             => 'representante_id',
                'associationForeignKey'  => 'estudiante_id',
                'unique'                 => 'keepExisting',
'With'  => 'EstudiantesRepresentante'
            )
    ); 
}

Estudiante.php

class Estudiante extends AppModel {
    public $name        = 'Estudiante';
var $virtualFields = array(
     'fec_nac' => "TO_CHAR(Estudiante.fec_nac, 'dd/mm/YYYY')"
);
public $belongsTo = array(
        'Nivel',
'Estado',
'Municipio',
'Parroquia',
'Nacionalidad',
    );
 public $hasMany = array(
        'EstudiantesEmpresasOficio'
    );
}


Gracias de antemano. Saludos.

-- 
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos 
de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos 
electrónicos, envía un correo electrónico a 
cakephp-es+unsubscr...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a 
cakephp-es@googlegroups.com.
Visita este grupo en http://groups.google.com/group/cakephp-es.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.


Responder a