我有一个足球比赛表,该表显示基于minute
和extra_minute
的比赛。例如:
id | type | minute | extra_minute | reason
1 | yellowcard | 45 | null | null
2 | yellowcard | 45 | 1 | null
3 | period | 45 | null | HT
4 | goal | 45 | 2 | null
5 | goal | 46 | 2 | null // this is second half
6 | period | 90 | null | FT
7 | goal | 90 | 2 | null
订单应为
yellowcard (45)
yellowcard (45+1)
goal (45+2)
HT
goal (46)
goal (90+2)
FT
我在
之类的“匹配”中尝试了一个关系查询public function events() {
return $this->hasMany(Event::class)->orderBy('minute', 'asc')
->orderBy('extra_minute', 'asc');
}
但这会导致
HT
yellowcard (45)
yellowcard (45+1)
goal (45+2)
...
使用Laravel Query Builder对所需样式进行排序的方式是什么? 我知道为什么我的查询生成器无法正常工作,但是我无法提出实现我想要的东西的方法
答案 0 :(得分:1)
->orderByRaw('type = ? asc', 'period')
是做到这一点的方法。
return $this->hasMany(Event::class)
->orderBy('minute', 'asc')
->orderByRaw('type = ? asc', 'period')
->orderBy('et_minute', 'asc');