Bonjour à tous, je ne sais pas si c'est dans les pratique de CakePHP mais peux-t-on faire une liaison hasMany sur le même terme
Exemple : une association pour appartenir à une autre association et une association peut avoir plusieurs associations.

Merci d'avance,
Flourt.

8 réponses


Lartak
Réponse acceptée

Bonjour.
Que penses tu de : Plusieurs relations avec le même model ?
<u>Exemple :</u>

class Message extends AppModel {
    public $belongsTo = array(
        'Sender' => array(
            'className' => 'User',
            'foreignKey' => 'user_id'
        ),
        'Recipient' => array(
            'className' => 'User',
            'foreignKey' => 'recipient_id'
        )
    );
}

<u>Ou encore :</u>

class User extends AppModel {
    public $hasMany = array(
        'MessageSent' => array(
            'className' => 'Message',
            'foreignKey' => 'user_id'
        ),
        'MessageReceived' => array(
            'className' => 'Message',
            'foreignKey' => 'recipient_id'
        )
    );
}

<u>Il y a ça aussi :</u>

class Post extends AppModel {
    public $name = 'Post';
    public $belongsTo = array(
        'Parent' => array(
            'className' => 'Post',
            'foreignKey' => 'parent_id'
        )
    );
    public $hasMany = array(
        'Children' => array(
            'className' => 'Post',
            'foreignKey' => 'parent_id'
        )
    );
}

Pour faire des relations sur la table courante.
Tu pourrais par exemple utiliser : Fédération, Ligue, Comite et Club en utilisant className.
En gérant bien sur correctement les associations dans les relations.

<u>Source des codes :</u> Documentation CakePHP Cookbook 2.x

Enjoy !

alexandreg
Réponse acceptée

Autant pour moi, quand tu dis 'association' c'est association sportive et non association de modèles. C'est pour cela que je ne comprenais pas. Vu d'ici ca ressemble fortement à un arbre. Chaque élément a un parent (ou non) qui lui même à un parent ou non.
Tu appliques le comportement "tree" à un model. Puis tu associes chaque entrée de ton arbre un autre model 'type_association' qui comprend ces entrées : fédération, ligues, comité, clubs
Donc chaque association à un parent, et un type. Et voila, non ?

Au delà de ta question , c'est ta problématique qui est bizarre !!
Tu as une table association et plusieurs éléments entre eux peuvent s'appartenir c'est ça le délire ??
C'est bizarre mais admettons.
Je ne sais pas si c'est possible aussi à défaut j'aurais faire une table association parent et association enfant (avec les mêmes résultats à l'intérieur mais bon.) et la relation entre les deux tables.

Digikube
Auteur

En effet c'est un peu bizarre mais c'est le cas dans mon application une associations peut être fédéré par une autre comment je peux le modéliser autrement qu'en faisant une seule entité Association ?

En sachant que les Asso parents et les Asso enfants ont les même caractéristique donc la logique ne voudrait pas que je sépare les 2...

Hello,
ton problème n'est pas très clair. Une association n'appartient pas à quoi que se soit pour moi... C'est une liaison entre 2 éléments. A HasMany B. Pourrais tu expliquer plus explicitement en mettant des A, des B et des Liaisons dans un exemple écrit.

Digikube
Auteur

Il s'agit de crée une hiérarchie dans les associations en fait :
Une fédération gère plusieurs ligues qui elles même gèrent plusieurs comité qui eux même gèrent plusieurs clubs (toutes ces entités sont des associations)

Est-ce plus clair ou pas ?

et les appelés clubs ou comités ne serait pas plus simple ?

Digikube
Auteur

Certainement mais c'est con de coder les mêmes comportement pour les clubs, les comités, les ligues et les fédérations, sachant que tous ont un comportement unique celui d'une association.