Сложный порядок, используя несколько столбцов - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть таблица футбольных событий, которая показывает события на основе 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

Я попытался запрос отношения в Match, как

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? Я знаю, почему мой построитель запросов не работает, но я не смог придумать что-то для достижения того, чего я хочу

1 Ответ

0 голосов
/ 13 февраля 2019

->orderByRaw('type = ? asc', 'period') это способ сделать это.

return $this->hasMany(Event::class)
            ->orderBy('minute', 'asc')
            ->orderByRaw('type = ? asc', 'period')
            ->orderBy('et_minute', 'asc');
...