2016-12-24 76 views
0

我剛剛進入Laravel(5.3),並且一直在試圖弄清我如何完成模型/表之間更復雜的關係。與Laravel/Eloquent的複雜關係

在我的例子中,我正在構建一個聯繫人應用程序。用戶有很多聯繫人,這很容易。更棘手的部分是定義接觸連接。假設用戶有兩個聯繫人是姐妹。用戶可以連接這兩個聯繫人,輕鬆地在他們之間移動。用戶可以爲聯繫人分配無限量的連接。

所以,我顯然有一個用戶表與一個ID和一個聯繫人表與ID和一個user_id字段附加到用戶。用戶也可以創建多個連接名稱。就像「姐姐」。一旦用戶創建了一個新的連接名稱,我想要存儲它,以便稍後使用輸入類型輸入或其他方法輕鬆使用相同的連接名稱。因此,connection_names表具有綁定到用戶的條目。

表我很難與實際的連接數據透視表。無論如何,我認爲這是一個數據透視表。對於所有的術語來說還是有點新鮮的。圖有點說了這一切。連接表基本上都是連接到其他表的ID。聯繫人表中的兩個ID建立連接本身,另外還有一個用於連接名稱的ID。

那麼,首先,我該如何設置模型來定義Laravel中的連接關係,並用口才表達?有什麼我可以/應該做得更好或更乾淨嗎? 另外,我是否正確地爲Laravel/Eloquent自動選擇任何或所有這些命名約定?

非常感謝! connections diagram

回答

0

如果你有$connection對象,並希望訪問Contact對象(主機或連接用戶)那麼你可以使用belongsTo爲:

public function host() 
{ 
    return $this->belongsTo('App\Contact', 'contact_id'); 
} 

public function connection() 
{ 
    return $this->belongsTo('App\Contact', 'connection_id'); 
} 

如果你有Contact模型的對象和想要訪問所有連接,那麼你需要一個belongsToMany關係爲:

public function connection() 
{ 
    return $this->belongsToMany('App\Contact', 'connections', 'contact_id', 'connection_id'); 
} 

您的命名約定已正確完成。

+0

謝謝!我會給你一槍! – Mattaton