Salut à tous !

J'ai créé un plugin commentaire et j'essaie en vain d'avoir accès à une association en l'utilisant en dehors du plugin lui-même (fonctionne très bien depuis l'intérieur du plugin).

$this->loadModel('Comments');
$comments = $this->Comments->find()->where(['clan_id'=>$this->viewVars['clan']['id']])->contain(['Users']);

$this->set('comments',$this->paginate($comments));

Et la réponse : Comments is not associated with Users

Mais j'ai bien effectué la relation :
UsersTable :


      $this->hasMany('Comments', [
          'foreignKey' => 'user_id'
      ]);

Plugin CommentsTable.php

    $this->belongsTo('Users', [
        'foreignKey' => 'user_id',
    ]);

Merci d'avance à tous pour votre aide !

Joyeuses fêtes :)

2 réponses


Hello,

J'ai jamais utilisé de table dans mes plugins, mais je crois qu'il faut leur donner un nom avec la syntax de plugin : http://book.cakephp.org/3.0/en/plugins.html#plugin-models

Donc, dans la table Comments, sa serais plus un truc du genre

$this->hasMany('MyPlugin.Users', [
      'foreignKey' => 'user_id'
]);

Ou en utilisant l'option className:

$this->hasMany('Users', [
      'className' => 'MyPlugin.Users',
      'foreignKey' => 'user_id'
]);
fital
Auteur

Hello !

Merci pour ta réponse, oui effectivement j'ai oublié de le préciser mais j'ai essayé d'ajouter une className mais ça n'a rien changé.

En faite le soucis ce pose de l'autre côté ^^. Je sais pas si sur mon 1er post j'ai été compréhensif ^^

En gros je souhaite utiliser un model en dehors d'un plugin qui se trouve lui dans un plugin.

J'ai testé toutes sorte de "className" mais je t'avoue que je ne vois pas comment la mettre étant donné que selon Cakephp 3.1 l'erreur vient du faite que le plugin Comment n'a pas d'association avec Users (par contre DANS le plugins cette association via simple belongsTo fonctionne..)

J'ai également essayé de lui dire ou il doit aller chercher cette put*** d'association xD :

Dans le fichiers Plugins->CommentsTable.php


    $this->addAssociations([
      'belongsTo' => [
        'Users' => ['className' => 'App\Model\Table\UsersTable']
      ]
    ]);

Mais même comme ça il veut pas :/

PS : au passage un grand bravo pour ton GitHub Xeta qui est super intéressant ! dommage que tu ne le continues plus