Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

J'ai plusieurs animaux que je cherche a catégoriser par couleur, j'ai donc lié mes models avec hasMany et belongsTo et créé une clé étrangère.

Ce que je veux

Je cherche à pouvoir cliquer sur ma catégorie et voir afficher les bon animaux.

Ce que j'obtiens

Je ne sais pas du tout par où commencer pour afficher les bons animaux dans mes catégories, en ce moment j'obtiens tous mes animaux dans mes différentes catégories.

Je suis bloqué, par ou commencer ? Pouvez-vous m'orienter ? La lecture de Cake 2 ne m'aide pas

4 réponses


Ptolam
Réponse acceptée

Excuse-moi, j'ai un peu ta question de travers...

Cake 2 n'est plus aussi frais dans ma mémoire, mais il me semble qu'il est possible de chainer les associations lors d'un find.
Tu peux me dire si quelque chose dans ce genre fonctionne ?

$this->Animal->Color->find('all', array(
        'conditions' => array('Color.name' => 'LeNomDeTaCouleur')
 ));

C'est peut-être complètement incorrect, il y a un moment que je n'utilise plus Cake 2.

Si c'est le cas, il me semble que tu peux regarder les tables jointes ici.

Salut.
Je crois que tu peux obtenir le résultat escompté en utilisant Matching.

Sur le book, tu as une section dédiée assez bien expliquée et simple d'utilisation : http://book.cakephp.org/3.0/fr/orm/retrieving-data-and-resultsets.html#filtrer-par-les-donnees-associees

Le principe est simple. Tu récupères tes animaux et tu filtres les résultats en fonction de l'association. Par exemple :

$animals->find()
->matching('Colors', function ($q) {
    return $q->where(['Colors.name' => 'LeNomDeTaCouleur']);
});
Maxou
Auteur

Bonjour à toi Ptolam, merci de ta réponse et désolé de ma réponse tardive.
Je suis en version CakePHP 2, cela ne pose pas un problème ? ( je l'ai pourtant précisé )

Cordialement

Maxou
Auteur

bonjour à toi Ptolam, lorsque je fais ça , ça marche et me renvoie

array (size=1)
  0 => 
    array (size=2)
      'Categorie' => 
        array (size=3)
          'id' => string '2' (length=1)
          'nom' => string 'Blanc' (length=5)
          'couleur' => string 'white.png' (length=9)
      'Animal' => 
        array (size=1)
          0 => 
            array (size=5)
              ...

avec un var_dump

****EDIT : j'ai réussis ! ( avec quelques modification tout de même ) merci à toi, c'est toujours frais dans ta mémoire ! Maintenant je n'ai plus cas changer le titre de mes pages car j'ai toujours "Tous les Animaux" sur chaque page ! ^^