2012-11-08 4 views
4

J'essaie d'utiliser ORM pour la première fois, je l'ai défini les modèles comme celui-ci:ORM: relation amitié/Buddylist

modèle utilisateur:

class User extends Eloquent 
{ 
    public function friends() 
    { 
     return $this->has_many_and_belongs_to('User', 'friends', 'user1_id', 'user2_id'); 
    }  
} 

modèle ami:

class Friend extends Eloquent 
{ 
    public function friend() 
    { 
     return $this->belongs_to('User', 'user_id'); 
    }  
} 

amis table mysql:

id (pkey) # user1_id (references users.user_id) # user2_id (references users.user_id)

En ce moment à l'aide $user->friends je reçois une liste unilatérale parce que les paramètres de base de données d'amis peuvent être dans un ordre (user1 est ami de user2 OU user2 est ami de user1). Ce serait bien si j'essayais d'utiliser l'approche suivante/suiveur, mais je veux que ce soit réciproque.

Quelle est la meilleure façon de faire ce genre de choses? L'insertion de duplication user1/user2 et user2/user1 sur la base de données ne semble pas être une bonne approche et je ne saurais même pas comment la traduire dans l'ORM. De plus, il semble que le modèle Friend ne soit pas utilisé/ne soit pas appelé du tout. Je vais aussi avoir un problème similaire sur le système ami d'invitation.

Répondre

2

Vous êtes à la recherche d'une relation de plusieurs à plusieurs, entre les utilisateurs :) Découvrez comment vous pouvez le faire dans Doctrine: Doctrine - Many to Many Self Referencing. Un exemple de doctrine peut vous aider à démarrer. L'idée est que vous avez une Entité, Utilisateurs, et qu'ils peuvent être amis entre eux.

Questions connexes