2015-05-29 80 views
1

我有一個固定裝置的表格,看起來像這樣;Laravel關係結構

  • user_id說明
  • opponent_id
  • 遊戲週期
  • league_id

我也有存儲夾具的結果的結果表,當他們進來,

  • user_id
  • 遊戲週期
  • league_id
  • 結果

什麼我奮力與兩個如何調用關係,當我需要它之間的關係。

基本上,每個燈具包含兩個結果;一個user_id_result和一個opponent_id_result(這兩個參考users表中的一個id)

我在Fixture模型中做了這樣的事情;

public function userResult() 
{ 
    return $this->hasMany('App\Models\Result', 'league_id', 'league_id') 
     ->where('user_id', $this->user_id) 
     ->where('gameweek', $this->gameweek); 
} 

而且,雖然這個工作,我不認爲這是完全正確的,也通過預先加載調用時沒有工作。

謝謝你們。

回答

0

這似乎不是一個好的數據庫結構,它可能是問題的根源所在。兩張表都有3列,它們是相同的。這不僅效率低下,而且令人困惑。

乍一看,它會更有意義下降3列在搜索結果表,user_idgameweekleague_id並用fixture_id這就是將處理您的關係替換它們。 fixtures.id = results.fixture_id

我不知道這裏存儲了什麼,但可以通過將results表全部放在一起並將results列添加到fixtures表中來進一步簡化它。讓它爲空,當遊戲完成時,更新該列。

+0

謝謝 - 我明白了你的觀點。我的印象是,在數據庫中有空項目通常是一個壞主意?它不僅僅是一個空結果,而是2個(用戶和對手的結果)。當我計劃數據庫分別存儲結果時,對我來說更有意義。 – Alex

+0

只要你知道他們的意思,我不認爲空列是特別糟糕的。如果你將存儲2個結果,那麼應該有更好的方法。你能舉一個結果的例子嗎?我會考慮一下,並用更好的解決方案編輯我的問題。 – user3158900

+0

結果將僅包含一個值;結果。加一個user_id和其他所需的配對(fixture_id?)。夾具user_id和opponent_id都使用用戶表 – Alex