Bonjour à tous,
Voici mon cas, j'ai quatre tables :
clients--1,1----0,n-->villes--1,1----0,n--> département--1,1----0,n-->regions
j'aimerai faire un find('first) pour trouver un client quelconque dans une région et aussi avec quelques conditions sur le client genre (si ça fiche est traité ou pas ) , j'ai essayé avec le comportement containable mais j'ai pas pu mettre la condition de la région:
$client=$this->find('first',array(
'conditions'=>array('Client.id'=>$client_id),
'contain'=>array(
'Specialite',
'Category',
'Ville'=>array(
'Departement'=>array(
'Region'
)
)
),
));
et quand je met la condition dans la région :
$client=$this->find('first',array(
'conditions'=>array('Client.id'=>$client_id),
'contain'=>array(
'Specialite',
'Category',
'Ville'=>array(
'Departement'=>array(
'Region'=>array(
'conditions'=>array('id'=>1),
)
)
)
),
));
il me trouve un client mais qui n'est pas de cette région et le résultat de la région est un tableau vide.
du coup j'ai construit une requête joins comme suit:
$client=$this->find('first',array(
'joins'=>array(
array('table' => 'villes',
'alias' => 'Ville',
'type' => 'LEFT',
'conditions' => array(
'Ville.id = Client.ville_id',
)
),
array('table' => 'departements',
'alias' => 'Departement',
'type' => 'LEFT',
'conditions' => array(
'Departement.id = Ville.departement_id',
)
),
array('table' => 'regions',
'alias' => 'Region',
'type' => 'LEFT',
'conditions' => array(
'Region.id = Departement.region_id',
)
)
),
'conditions'=>array(
'Region.id'=>$region_id,
'Client.processed'=>false,
)
));
la j'ai le résultat que je recherche mais j'ai pas les infos sur la ville et département et région sauf les infos de la table client, alors du coup je récupère le 'id' de ce client et je refait un find('first') avec le comportement containable pour tous bien récupérer.
Ma question:
-Peut on faire une recherche avec le comportement containable d'une grande profondeur comme dans mon exemple et avec des conditions dans la dernière table.
-Sinon si il y'a une autre astuce pour mon cas de tel sorte qu'une requête est suffisante