以雄辩的方式排序关系

时间:2016-05-30 01:23:06

标签: php laravel eloquent

我有一张桌子:

  1. 分析,列(id, name, game_id(FK));
  2. 游戏,列(id, name, round_id(FK));
  3. 圆形,列(id, round);
  4. 我需要按(round_id)获取分析顺序的所有记录。

    我尝试Analyses::orderBy('round_id')->get(),但没有工作;

2 个答案:

答案 0 :(得分:3)

首先,您的分析表中没有该列

要完成订单,你必须将它添加到您的关系中(假设它们已正确完成)

分析模型

public function games()
{
    return $this->hasMany(Game::class)->orderBy('round_id'); //see? we can add orderBy to the relation
}

游戏模型

public function rounds()
{
    return $this->hasMany(Round::class); // i dont know if its manytomany for eal, im just trying to explain 
}

现在你可以使用像这样的热门加载来获得游戏的所有分析和回合

$test = Analyses::with('games.round')->get();

你可以链接另一个orderby进行分析这样的例子

$test = Analyses::with('games.round')->orderby('game_id')->get();

在上面的例子中,你将按照game_id排序分析,每个分析中的游戏将按round_id排序

我希望这就是你想要做的事情

答案 1 :(得分:0)

"01:07:10"

分析模型

圆形模型

Set the following relationships in to the respective model as given below

游戏模型

public function games()
 {
   return $this->hasMany('Game','game_id','id'); 
 }

您的查询应该像这样

public function analyses()
 {
   return $this->hasMany('Analyses','round_id','id'); 
 }