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 .