IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

Recursivité dans les modèles refuse de fonctionner [CakePHP]


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut Recursivité dans les modèles refuse de fonctionner
    SAlut,

    Bon j'ai quelques modèles avec des relations

    Soit un modèle A qui comporte UN enregistrement du modèle B qui comporte plusieurs enregistrements du modèle C (je simplifie hein)

    Quand j'appel un enregistrement du modèle A je veux qu'il me récupère le B associés ainsi que les C associées au B.

    Pour l'instant j'ai bien A et B mais jamais j'arrive a avoir les C.

    Dans le modèle A j'ai mis $recursive = 2 (et j'ai essayé de mettre récursive dans B mais ça change rien).

    J'ai fais un teste avec B tout seul il récupère bien les C donc la liaison est bonne.

    Est-ce que quelqu'un a une idée pour me dépanner ?

    merci

    CakePHP 1.2.5
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 58
    Par défaut
    Normalement faire ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $this->A->recursive = 2; // ou 3 peut-etre
    debug($this->A->find('all'));
    Mais si ils ces modeles ont le Containable Behavior (personnellement je le met toujours dans AppModel::$actsAs) tu peux faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $this->A->contain(array('B', 'B.C'));
    debug($this->A->find('all'));
    Quels sont les resultats chez toi ?

  3. #3
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Citation Envoyé par real34 Voir le message
    Normalement faire ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $this->A->recursive = 2; // ou 3 peut-etre
    debug($this->A->find('all'));
    Pas mieux , si je mets -1 je recupere que A, sinon je vais pas plus loinq ue B

    Citation Envoyé par real34 Voir le message
    Mais si ils ces modeles ont le Containable Behavior (personnellement je le met toujours dans AppModel::$actsAs) tu peux faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $this->A->contain(array('B', 'B.C'));
    debug($this->A->find('all'));
    Quels sont les resultats chez toi ?
    J'ai pas fait encore comment tu mets en place ?
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Bon j'ai fait containable par contre j'ai un message d'erreur :

    Model "B" is not associated with model "C"
    Étrange pour tant il l'est et comme dit tout a l'heure en prenant B directement j'arrive a avoir C ....

    Je vais voir ce qu'il a pas aimé.

    Merci
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  5. #5
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Bon j'ai trouvé ma boulette .....

    Le nom du model B était au pluriel dans la déclaratoire $hasOne de A ....du coups il le chopait bien (car il faisait une requête séparée et que dans la table le nom est bien au pluriel) mais ça cassait toute la logique dans l'application.

    Bref conclusion : faites bien gaffe aux conventions.

    a toi !
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 58
    Par défaut
    Citation Envoyé par RideKick Voir le message
    Bref conclusion : faites bien gaffe aux conventions.
    D'où l'intérêt de poster des portions du code réel en demandant de l'aide, celà permet d'avoir un oeil extérieur sur le code ... et souvent de détecter ces petites erreurs d'innattention qui sont le quotidien du développeur (aaahhh les heures passer à débugguer des fautes de frappe !)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/06/2015, 01h08
  2. [PHP-JS] Refuser un achat si membre dans les -
    Par benjam89 dans le forum Langage
    Réponses: 15
    Dernier message: 20/08/2007, 23h35
  3. Méthodes d'ApplicationHelper accessible dans les modèles ?
    Par Fildz dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 11/08/2007, 00h43
  4. fonctionnent de la méthode run dans les threads
    Par L4BiN dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 25/07/2006, 12h06
  5. [DOM] Les nodes dans le modèle DOM
    Par Bele'nos dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/03/2005, 23h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo