2015-12-19 29 views
1

說明:

Laravel 5 - 查詢多個數據庫中關聯表


我的工作,就會向要求我使用多個關聯表,我想知道表是如何關聯的內Laravel工作,同時利用數據庫建立的雄辯關係。

我有一個包含足球比賽的數據集。我需要存儲玩家,遊戲以及遊戲的特定玩家信息。所以我的結構應該是這個樣子:

Player Table: 
+------------+---------+ 
| id   | integer | 
+------------+---------+ 
| name  | string | 
+------------+---------+ 
| team  | string | 
+------------+---------+ 
| country | string | 
+------------+---------+ 
| average | string | 
+------------+---------+ 
| updated_at | Date | 
+------------+---------+ 
| created_at | Date | 
+------------+---------+ 

Game Table 
+--------------+---------+ 
| id   | integer | 
+--------------+---------+ 
| name   | string | 
+--------------+---------+ 
| country  | string | 
+--------------+---------+ 
| tournament | string | 
+--------------+---------+ 
| score  | string | 
+--------------+---------+ 
| started_at | Date | 
+--------------+---------+ 
| ended_at  | Date | 
+--------------+---------+ 
| updated_at | Date | 
+--------------+---------+ 
| published_at | Date | 
+--------------+---------+ 

的問題是,我需要的是一個玩家可以有很多遊戲遊戲有衆多玩家兩個關聯在一起的表。


問:


我怎麼會去構建我的代碼?

  • 我會寫一個player_game模型嗎?
  • 因爲這是Laravel,我是否以與平時不同的方式存儲關聯?

直覺上我想寫一個player_game遷移,其中包含遊戲特定的信息爲一名球員。但是,Laravel 5和hasMany()屬性如何工作?

回答

1

按照你的直覺。你是對的,你在找什麼叫做Many to Many Relationship

創建中間表,然後您可以使用不同的查詢進行播放,如果Laravel HasMany類型方法不滿足您的需求,則可以始終直接查詢中間表。

+0

謝謝你爲這個!這樣做的正確方法是否需要將數據插入到中間表中的安靜路線?或者我會通過玩家和遊戲中的邏輯分開來做到這一點? – acupajoe

+0

中間表取決於其他兩個(玩家和遊戲),因此通過任何這些實體處理它們更有意義,一切取決於您的應用程序需求。 – marcanuy

+1

謝謝你試着讓這個代碼儘可能接近標準 – acupajoe

1

您需要創建一個名爲game_playermany to many relationship的數據透視表。你可以將你的遊戲特定信息存儲在這個表格中。

關係博弈模型,

public funtion players() 
{ 
    return $this->hasMany('Player'); 
} 

從數據透視表訪問遊戲的具體信息,

foreach ($game->player as $player) 
{ 
    echo $player->pivot->created_at; 
} 
相關問題