我有一個包含Competitors (competitors table
)和Match (matches table)
的列表的運動應用程序,在匹配中有兩個競爭對手,所以匹配表有一列player with hasOne competitor relationship
,而另一列opponent with hasOne competitor relationship
,這似乎起初還好,但對於比賽模型中的關係必須是這樣的:Laravel 5.1擁有兩個用戶ID列的表格的雄辯關係
當前的匹配模式
public function player()
{
return $this->hasOne('App\Competitor');
}
public function opponent()
{
return $this->hasOne('App\Competitor');
}
,而不是像這樣:
理想的搭配模式
public function players()
{
return $this->hasMany('App\Competitor');
}
,併爲競爭對手模型的關係變得更加醜陋用:
當前競爭對手型號
public function playerMatch()
{
return $this->belongsTo('App\Match', 'player_id');
}
public function opponentMatch()
{
return $this->belongsTo('App\Match', 'opponent_id');
}
取而代之的是這樣的:
個理想競爭對手型號
public function match()
{
return $this->belongsTo('App\Match');
}
如果沒有兩列一個爲每個玩家這個看起來應該的方式,讓所有的玩家匹配,或者使用獲得比賽的球員(S)急於加載或其他,但事實並非如此。
我想只能使用belongsTo match
和hasMany competitors
就像我上面概述的那樣,但我不確定如何使這項工作,而不是單獨獲取每個結果,然後合併它們之前進行,或者如果甚至有可能做到理想?這是否意味着重新配置數據庫表?
嗨。我也有同樣的問題。你怎麼解決這個問題?如果競爭者持有匹配外鍵,競爭者將只附加到1個匹配。那不是我想要的 – LTroya