- есть синтаксис с вашими кавычками, замените одинарные кавычки на двойные кавычки, чтобы он мог включать 'ATP - SINGLES' et c:
"case when competition_type in ('ATP - SINGLES', 'WTA - SINGLES') then -1 else competition_type end, competition_type"
изменить Match::raw()
на DB::raw()
У вас есть два orderBy
, вам нужно сделать это одно, если вы хотите заказать по hour
и затем сделайте заказ по competition_type
, вам нужно сделать это так:
orderBy('hour', DB::raw("CASE WHEN competition_type IN ('ATP - SINGLES', 'WTA - SINGLES') then -1 ELSE competition_type END"))
Итак, ваш код будет выглядеть так:
$matches = Match::where('date', $date)
->where('pick_score', '<>', '0');
$matches = $matches->orderBy('hour', DB::raw("CASE WHEN
competition_type IN ('ATP - SINGLES', 'WTA - SINGLES') then -1
ELSE competition_type END"))
// you can remove case when from select, I just select it out for you can proofread better
->select('match.*', DB::raw("CASE WHEN
competition_type IN ('ATP - SINGLES', 'WTA - SINGLES') then -1
ELSE competition_type END"));