2012-11-08 94 views
4

我试图使用ORM的第一次,我已经定义了模型是这样的:ORM:友谊/好友列表关系

用户模式:

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

朋友型号:

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

朋友MySQL表:

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

现在通过使用$user->friends我得到一个单方面的名单,因为朋友数据库参数可以以任意顺序(user1的用户2的朋友OR用户2为user1的朋友)。如果我尝试使用follow/followers的方法,这样可以,但我希望它是互惠的。

做这种事情的最好方法是什么?在数据库中插入重复的user1/user2和user2/user1听起来不是一个好方法,我甚至不知道如何将其转换为ORM。另外,似乎Friend模型没有被使用/被调用。

我也会在邀请朋友系统上有类似的问题。

回答

2

您正在寻找用户之间的多对多关系:) 了解如何在Doctrine中执行此操作:Doctrine - Many to Many Self Referencing。学说的例子可能会帮助你开始。

这个想法是,你有一个实体,用户,他们可以是彼此的朋友。