Bonjour,
J'ai un petit problème concernant la récupération de données avec un BelongToMany.
En effet j'ai 4 tables

Table Users

public function initialize(array $config)
{
    $this->hasOne('Profils',['foreignKey' => 'user_id']);
    $this->hasMany('Projects', ['foreignKey' => 'user_id', 'dependent' => true, ]);
    $this->belongsToMany('Skills');
 }

Table Skills

public function initialize(array $config)
{
    $this->belongsToMany('Users');
}

Table skills_users

pas déclaré uniquement en base de donnée

Table Projects

      public function initialize(array $config)
      {
        $this->belongsTo('Users', [ 'foreignKey' => 'user_id', 'joinType' => 'INNER' ]);
         $this->belongsTo('Categories',[
            'foreignKey' => 'categorie_id'
        ]);

         $this->addBehavior('Timestamp', [
            'events' => [
                'Model.beforeSave' => [
                    'created_at' => 'new',
                    'update_at' => 'always'
                ]
            ]
        ]);
    }

Donc chaque projet appartient à un utilisateur et un utilisateur à un/plusieurs skills

lorsque je liste tout les projets, je voudrais que ma requête me retourne les skills associés aux utilisateurs concernés
Lorsque je réalise cette requête :

    $projects = $this->Projects->find('all')->contain(['Users','Users.Profils','Users.Skills']);

Cela me retourne un tableau skills vide.
Une idée ?

Merci

4 réponses


Xen0risDEV
Réponse acceptée

Bonjour, comme je ne comprends pas vraiment votre souci, quoique j'aie une petite idée en tête de ce qui pourrait éventuellement bloquer, je ne vais pas vous dire n'importe quoi, mais je vous conseille de vous référer au cookbook.

Je me permet de relancer

Et bien merci du conseil ! j'ai rajouté

    'joinTable' => 'skills_users'

à mon association et cela marche.
Merci

Bonjour, impeccable alors ! Bonne continuation :)