Bonjour à tous,
J'ai un petit problème un peu simple mais je ne trouve malheureusement pas la réponse...
J'ai 3 tables dans ma base (je simplifie le schéma avec seulement les colonnes qui nous concernent):
apparts
ID NAME QUARTIER_ID CREATED
villes
ID NAME CREATED
quartiers
ID NAME VILLE_ID CREATED
J'ai donc ajouté dans mon model Quartier un $belongsTo Ville.
Et dans mon model Apparts.php, j'ai ajouté un $belongsTo Quartier
Dans chaque model, j'ai déclaré la variable $recursive = -1, pour éviter que tous les models soit chargé à chaque requête!
Bref, j'aimerai donc ici faire un tableau dans mon backoffice avec 5 colonnes.
ID Titre Quartier Ville Actions
Voici mon paginate dans mon AppartsController -> function admin_list()
function admin_list() {
$this->paginate = array(
'fields' => array('Appart.id','Appart.name', 'Quartier.name'),
'order' => array('Appart.created' => 'DESC'),
'recursive' => 0
);
$this->set('apparts', $this->paginate('Appart'));
}
Le problème, c'est qu'avec le recursive à 0, je n'arrive pas à récupérer le nom de la ville lié au quartier en question.
Même en mettant à 1 ou 2, ca ne fonctionne pas :/
Pouvez-vous m'éclairer sur ce point ?
En espérant avoir été assez clair, je vous remercie d'avance pour votre aide ;)
Ilan
Déjà c'est surement une erreur de frappe lors de la recopie mais on sait jamais tu a mit Apparts.php au lieu de Appart.php
Tu peut vérifier que le belongs to en faisant des debug($this->Appart->belongsTo); debug($this->Appart->Quartier->belongsTo);
et vérifier qu'il y a bien quelque chose
Ensuite par principe je rajouterais $hasMany = array('Quartier') dans Ville.php et $hasMany = array('Appart') dans Quartier.php
et je ferais des find('all', array('recursive'=>2)) sur tout les model pour voir ce que ça sort.
Oui c'était bien une erreur de frappe ;)
En ajoutant le hasMany, j'ai réglé le problème. De plus, j'ai suivi le tuto de Grafikart sur le comportement Containable et j'ai pu optimisé et maitrisé mes requetes!!
Merci beaucoup pour ton aide Snap!
A bientôt pour d'autres questions! ;)