2017-06-19 89 views
1

我在Laravel中遇到了一些實現一些數據庫ER的問題。 「1-1」和「1-N」關係存在問題。Laravel中與額外字段的一對多關係

下面的示例波紋管非常簡單,我認爲。

我們有一個「團隊」而一個「玩家」

有一個隊很多球員。問題出在我需要保留關係的額外信息的情況下。

一個例子是「玩家爲該團隊從Date_1播放到Date_2」。

在這個例子中,我們似乎需要一個額外的表來保存這種信息。據我所知,Laravel並沒有爲「1-1」或「1-N」使用數據透視表。

那麼,我們將如何實施這種情況的Laravel方式..?

回答

1

這是一個棘手的問題。但我會再添加一個名爲player_records的表。具有以下屬性

player_id 
team_id. 
start_date 
end_date 

在每個模型中,我都有幫助方法來獲取例如活動球員。

這裏是團隊模型。

class Team extends Model 
{ 

    public function playerRecords() { 
     return $this->hasMany(PlayerRecord::class); 
    } 

    public function activePlayers() { 
     return $this->playerRecords()->where('start_at', '<=', Carbon::now())->where('ends_at', '>=', Carbon::now())->with('player')->get()->pluck('player'); 
    } 
} 

這裏是球員的典範

class Player extends Model 
{ 

    public function playerRecords() { 
     return $this->hasMany(PlayerRecord::class); 
    } 

} 

這裏是PlayerRecord模型

class PlayerRecord extends Model 
{ 

    public function player() { 
     return $this->hasMany(Player::class); 
    } 

} 
+0

謝謝愛德華回答。我可以看到你的觀點。我有一個問題,但。這樣我們每次需要PlayerRecord時都會做一個額外的查詢(這個確實不算太多!)。這是最好的方式嗎? –

+0

確實有一個額外的查詢。但我目前無法找出更好的解決方案。 –

相關問題