2012-11-08 90 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。學說的例子可能會幫助你開始。

這個想法是,你有一個實體,用戶,他們可以是彼此的朋友。