Вот код, который у меня сейчас есть:
$programmefundings = Programmefunding::where('status', '!=', 'draft')->orderByRaw("FIELD(status , 'open', 'announced', 'delayed', 'closed') ASC")->orderBy('date_start', 'desc')->get();
Таким образом, он получает все мои программные средства, кроме тех, которые имеют статус ‘проект’, переупорядочивает их из ‘открыть’ в ‘закрыто’ и организует их ‘DATE_START’.
Мне нужно переупорядочить фонды программы, которые имеют статус «объявлен» в другой колонке ‘Announcement_date’ в «По возрастанию» порядок, не нарушая ‘открыть’ в ‘закрыто’ структура, которая у него есть в настоящее время и не влияет на другие программные определения, которые не имеют значения состояния «Объявил».
Возможно ли это и кто-нибудь знает, как это сделать?
Спасибо!
Вы должны быть в состоянии сделать это с IF
заявление.
$programmefundings = Programmefunding::where('status', '!=', 'draft')
->orderByRaw("FIELD(status , 'open', 'announced', 'delayed', 'closed') ASC")
->orderByRaw("IF(status = 'announced', accouncement_date, date_start) DESC")
->get();
Я думаю, что вы хотите сделать что-то вроде этого. Он упорядочит все элементы со статусом объявленного сначала по дате объявления, затем отсортирует все остальное по дате_запуска.
$programmefundings = Programmefunding::where('status', '!=', 'draft')
->orderByRaw("case when status = 'announced' then announcement_date end asc")
->orderBy('date_start', 'desc')->get();