les cuento que solo llevo un tiempo trabajando con cake ... el problema que
tengo es paginar unos resultados que obtengo de una serie de joins, todos
los join los pongo en un arregle junto con las condiciones, en un find
asi ... al finail esta, $persona =
$this->Persona->find('all',$condicionesJoin); de manera que
$condicionesJoin, posee el mismo formato de los parametros que deberian ir
en el find, la busqueda funciona, que es una serie de condicione, el asunto
es que cuando mire los resultados... me dicuenta que necesitaba paginarlos,
y eso es lo que no he podido hacer
if($this->RequestHandler->isPost()) {
$condicionesJoin['joins'] = array();
$condicionesJoin['conditions'] = array();
$condicionesJoin['fields'] = array();
$condicionesJoin['order']=array();
$perfilA = array();
$perfilB = array();
if (!empty($this->data['Busquedas']['perfil'])){
$perfilA['table']= 'perfilpersona';
$perfilA['alias']= 'Perfilpersona';
$perfilA['type']= 'inner';
$perfilA['foreignKey']= false;
$perfilA['conditions']= array('Perfilpersona.persona_id=Persona.id');
array_push($condicionesJoin['joins'],$perfilA);
$perfilB['table']= 'perfil';
$perfilB['alias']= 'Perfil';
$perfilB['type']= 'inner';
$perfilB['foreignKey']= false;
$perfilB['conditions']= array(
'Perfil.id=Perfilpersona.perfil_id',
'Perfil.id'=>$this->data['Busquedas']['perfil']
);
array_push($condicionesJoin['joins'],$perfilB);
}
$areaA = array();
$areaB = array();
if (!empty($this->data['Busquedas']['areaespecializacion'])){
$areaA['table']= 'areaespecializacionpersona';
$areaA['alias']= 'Areaespecializacionpersona';
$areaA['type']= 'inner';
$areaA['foreignKey']= false;
$areaA['conditions']=
array('Areaespecializacionpersona.persona_id=Persona.id');
array_push($condicionesJoin['joins'],$areaA);
$areaB['table']= 'areaespecializacion';
$areaB['alias']= 'Areaespecializacion';
$areaB['type']= 'inner';
$areaB['foreignKey']= false;
$areaB['conditions']= array(
'Areaespecializacion.id=Areaespecializacionpersona.areaespecializacion_id',
'Areaespecializacion.id'=>$this->data['Busquedas']['areaespecializacion']
);
array_push($condicionesJoin['joins'],$areaB);
}
$tipomailA = array();
$tipomailB = array();
if (!empty($this->data['Busquedas']['tipomail'])){
$tipomailA['table']= 'personamail';
$tipomailA['alias']= 'Personamail';
$tipomailA['type']= 'inner';
$tipomailA['foreignKey']= false;
$tipomailA['conditions']= array('Personamail.persona_id=Persona.id');
array_push($condicionesJoin['joins'],$tipomailA);
$tipomailB['table']= 'tipomail';
$tipomailB['alias']= 'Tipomail';
$tipomailB['type']= 'inner';
$tipomailB['foreignKey']= false;
$tipomailB['conditions']= array(
'Tipomail.id=Personamail.tipomail_id',
'Tipomail.id'=>$this->data['Busquedas']['tipomail']
);
array_push($condicionesJoin['joins'],$tipomailB);
}
$tipotelefonoA = array();
$tipotelefonoB = array();
if (!empty($this->data['Busquedas']['tipotelefono'])){
$tipotelefonoA['table']= 'personatelefono';
$tipotelefonoA['alias']= 'Personatelefono';
$tipotelefonoA['type']= 'inner';
$tipotelefonoA['foreignKey']= false;
$tipotelefonoA['conditions']=
array('Personatelefono.persona_id=Persona.id');
array_push($condicionesJoin['joins'],$tipotelefonoA);
$tipotelefonoB['table']= 'tipotelefono';
$tipotelefonoB['alias']= 'Tipotelefono';
$tipotelefonoB['type']= 'inner';
$tipotelefonoB['foreignKey']= false;
$tipotelefonoB['conditions']= array(
'Tipotelefono.id=Personatelefono.tipotelefono_id',
'Tipotelefono.id'=>$this->data['Busquedas']['tipotelefono']
);
array_push($condicionesJoin['joins'],$tipotelefonoB);
}
$cargoA = array();
$cargoB = array();
if (!empty($this->data['Busquedas']['cargolaboral'])){
$cargoA['table']= 'trabajopersona';
$cargoA['alias']= 'Trabajopersona';
$cargoA['type']= 'inner';
$cargoA['foreignKey']= false;
$cargoA['conditions']= array('Trabajopersona.persona_id=Persona.id');
array_push($condicionesJoin['joins'],$cargoA);
$cargoB['table']= 'cargolaboral';
$cargoB['alias']= 'Cargolaboral';
$cargoB['type']= 'inner';
$cargoB['foreignKey']= false;
$cargoB['conditions']= array(
'Cargolaboral.id=Trabajopersona.cargolaboral_id',
'Cargolaboral.id'=>$this->data['Busquedas']['cargolaboral']
);
array_push($condicionesJoin['joins'],$cargoB);
}
$paisA = array();
$paisB = array();
if (!empty($this->data['Busquedas']['pais'])){
$paisA['table']= 'personatelefono';
$paisA['alias']= 'PersonatelefonoP';
$paisA['type']= 'left';
$paisA['foreignKey']= false;
$paisA['conditions']= array('PersonatelefonoP.persona_id=Persona.id');
array_push($condicionesJoin['joins'],$paisA);
$paisB['table']= 'pais';
$paisB['alias']= 'Pai';
$paisB['type']= 'left';
$paisB['foreignKey']= false;
$paisB['conditions']= array(
'Pai.id=PersonatelefonoP.pais_id',
'Pai.id'=>$this->data['Busquedas']['pais']
);
array_push($condicionesJoin['joins'],$paisB);
}
$provinciaA = array();
$provinciaB = array();
if (!empty($this->data['Busquedas']['provincia'])){
$provinciaA['table']= 'personatelefono';
$provinciaA['alias']= 'Personatelefono';
$provinciaA['type']= 'inner';
$provinciaA['foreignKey']= false;
$provinciaA['conditions']= array('Personatelefono.persona_id=Persona.id');
array_push($condicionesJoin['joins'],$provinciaA);
$provinciaB['table']= 'provincia';
$provinciaB['alias']= 'Provincium';
$provinciaB['type']= 'inner';
$provinciaB['foreignKey']= false;
$provinciaB['conditions']= array(
'Provincium.id=Personatelefono.provincia_id',
'Provincium.id'=>$this->data['Busquedas']['provincia']
);
pr($this->data);
array_push($condicionesJoin['joins'],$provinciaB);
}
if (!empty($this->data['Busquedas']['estado'])){
array_push($condicionesJoin['conditions'],array('Persona.estado_id'=>$this->data['Busquedas']['estado']));
}
$this->Persona->unBindModel(array(
'hasAndBelongsToMany'=>array(
'Areaespecializacion',
'Perfil',
'Tipotelefono',
'Tipodireccion',
'Redsocial',
'Carrera',
'Detalleactividad',
'Cargolaboral'
),
'hasMany'=>array(
'Perfilpersona',
'Areaespecializacionpersona',
'Trabajopersona',
'Carrerapersona',
'Personatelefono',
'Personaredsocial',
'Direccion',
'Personadetalleactividad'
),
)
);
array_push($condicionesJoin['fields'],'DISTINCT Persona.id');
array_push($condicionesJoin['fields'],'Persona.nombrepersona');
array_push($condicionesJoin['order'],'Persona.nombrepersona');
desde ya muchas gracias .
--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a
[email protected].
Para anular tu suscripción a este grupo, envía un correo electrónico a
[email protected]
Para tener acceso a más opciones, visita el grupo en
http://groups.google.com/group/cakephp-es?hl=es.