2015-12-13 69 views
0

我有一個名爲Player的模型,名爲'id'和'shortname'。 我有另一個名爲Team'id','teamname','player_1_id','player_2_id'和'player_3_id'的模型。渴望在模型中多次加載同一模型

我試圖使用關係:

//在模特隊

public function players() 
{ 
    return $this->hasOne('App\Player', 'id','player_1_id') 
     ->hasOne('App\Player', 'id','player_2_id') 
     ->hasOne('App\Player', 'id','player_3_id'); 
} 

//在控制器

$resource = Team::with('players')->get();不工作。

在這種情況下,哪個是使用預加載的最佳(最快)方式? 在此先感謝...

回答

2

您應該閱讀有關數據庫規範化。在團隊數據庫中存儲player_1_id,player_2_idplayer_3_id沒有任何意義。如果團隊將包含20名球員怎麼辦?你會創建另一個領域?

您應該將team_id添加到玩家模型中(如果玩家總是隻屬於一個團隊)或創建額外的表格,您將存儲玩家和團隊之間的連接。

+0

謝謝Marcin。我閱讀了關於數據庫規範化的知識,並且正如你所說的那樣理解,我應該只使用player_id,如果需要的話使用更多的行。但是,這會使行數增加很多。它不會減慢查詢速度,有更多的行嗎? (在我真正的項目中,我每隊有20名球員:P) – Attorn

+0

@Attorn很高興我能幫助你。當你沒有代碼時,最好跟蹤設計錯誤,而不是在你已經有了整個應用程序的時候找到它們 –