2015-05-29 156 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