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

2 réponses


snap
Réponse acceptée

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.

Ilan
Auteur

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! ;)