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 :

Jointures multiples avec CakePHP [CakePHP]


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Jointures multiples avec CakePHP
    Bonjour à tous !

    J'ai découvert CakePHP il y a quelques jours, j'ai lu une bonne partie du livre officiel et j'ai fais quelques exo.

    Je m'attaque maintenant à un site de plus grande envergure pour "me faire la main", mais je suis bloqué sur un point (depuis quelques heures, mais rien à faire... :euh: )

    CakePHP est très pratique et très rapide dans le cas de jointures directes (d'une table à une autre) ; il suffit alors d'indiquer les relations que les tables entretiennent les unes avec les autres dans le modèle.
    Mais lorsqu'il faut faire une jointure indirecte (des tables non liées directement, p. ex.: un magasin vends plusieurs catégories de produits et ces catégories contiennent plusieurs produits, on veut connaitre tout les produits vendus par le magasin), c'est une toute autre affaire !

    Je ne sais ni dans quel fichier effectuer les modification (modèle ou contrôleur ?) ni quelle modification apporter.

    J'ai bien fait quelques tests avec la variable $options, comme préconisé sur le site, mais lors du test, il y a une erreur de "colonne inconnue". En effet, il applique ma jointure avant la sienne, ce qui fait qu'il ne connaît pas encore "catégories" avant de faire la jointure entre "catégorie" et "produits"

    (je précise que j'utilise la pagination)

    Merci déjà de votre lecture et, éventuellement, de vos précisions

    Sebstein

  2. #2
    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
    Points : 12 572
    Points
    12 572
    Par défaut
    Bonjour,

    Il me semble pour avoir déjà fait ça il y' a quelques temps qu'il faut utiliser le composant containable, avec lequel tu précise les jointures hiérarchiquement et ce même si ce n'est pas précisé dans le modèle.

    JE reviens vers toi si je retrouve l'exemple que j'avais mis en place
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci,

    c'est effectivement ce que j'ai comme réponse sur un autre forum, j'ai donc appliqué cela à mon contrôleur, et ça fonctionne effectivement. Malgré tout, cela me génère 32 requêtes pour un temps d'exécution de 21ms...

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $this->Galery->contain(array('GaleryGroup.date', 'Language.code', 'GaleryGroup.PhotoGroup.url'));
    $order = array('GaleryGroup.date' => 'desc');
    $conditions = array('Language.code' => Configure::read('Config.language'));
     
    $galeries = $this->Galery->find('all', compact('conditions', 'order'));
    $this->set(compact('galeries'));
    Voilà mon MDD:
    • Une table 'languages' contenant les codes langues (on doit pouvoir en ajouter);
    • Une table 'galery_groups' contenant les dates de création des galeries;
    • Une table 'galeries' contenant les liens vers 'galery_groups' et 'languages' ainsi que le nom localisé de la galerie;
    • Une table 'photo_groups' content les liens vers 'galery_groups' ainsi que les URL (locaux) vers les photos;
    • Une table 'photos' content les lien vers 'photo_groups' et 'languages' ainsi que le nom localisé de la photo;


    Merci

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

Discussions similaires

  1. Jointure multiple avec volumétrie importante
    Par dadou225 dans le forum SAS Base
    Réponses: 5
    Dernier message: 24/03/2011, 16h30
  2. Requete SQL avec jointure multiple
    Par kissskoool dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/01/2008, 01h07
  3. [SQL 2000] Optimisation requête avec jointure multiple
    Par zooffy dans le forum Développement
    Réponses: 5
    Dernier message: 18/09/2007, 15h38
  4. [MySQL] Jointure JOIN avec clé multiple
    Par BlindeKinder dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/06/2007, 11h56
  5. UPDATE multiple avec jointure
    Par PyRoFlo dans le forum Requêtes
    Réponses: 6
    Dernier message: 25/05/2006, 15h56

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