Bonjour à tous,

Je viens vous exposer un problème qui me casse la tête depuis un petit moment, sûrement dû à mon côté débutant sur CakePHP.
Mon problème:

J'ai une structure de base de données qui ressemble à ça pour le moment :

J'ai créé mes modèles et mes controllers. J'utilise le système Auth pour authentifier mon user. Jusque là, tout va bien !

J'arrive a récupérer mon user en utilisant AuthComponent::user(), et j'arrive aussi a avoir ses habilitations en jouant sur recursive :

$this->Auth->authenticate = array(
            'Form' => array(
                'userModel' => 'User',
                'recursive' => 1
            )
        );

J'ai une autre relation dans mon modèle Habilitation avec le modèle Module (HABTM à travers la table habilitation_modules).

public $hasAndBelongsToMany = array(
     'User' =>
         array(
          'className' => 'User',
             'joinTable' => 'habilitations_users',
             'foreignKey' => 'habilitation_id',
             'associationForeignKey' => 'user_id'
         ),
      'Module' =>
         array(
          'className' => 'Module',
             'joinTable' => 'habilitations_modules',
             'foreignKey' => 'habilitation_id',
             'associationForeignKey' => 'module_id'
         )
     );

Et c'est là mon hic !!
Je souhaite pouvoir retrouver dans mon objet Habilitation, la liste des Modules accessibles grâce à l'habilitation en question...
MAIS, je ne sais pas où et comment faire ce chargement. Je pensais pouvoir faire un truc du genre (dans le controller Habilitation) $this->Habilitation->Module->find('all / ou un autre truc qui permet d'utiliser mon HABTM entre module et habilitation');

Qu'en pensez-vous? Où puis-je retrouver mes modules accessibles?

Je vous remercie à l'avance de votre aide.

Joned.

1 réponse


Joned
Auteur
Réponse acceptée

Je viens de trouver la solution à mon problème après une discution avec un ami dév et quelques recherches supplémentaires...

J'utilise donc CONTAINABLE pour descendre dans mes liens entre mes modèles.

Doc Containable

Au passage, merci à Grafikart pour tout son travail !