Laravel orderBy 列值
Laravel orderBy with column value
这是我目前拥有的代码:
$programmefundings = Programmefunding::where('status', '!=', 'draft')->orderByRaw("FIELD(status , 'open', 'announced', 'delayed', 'closed') ASC")->orderBy('date_start', 'desc')->get();
所以它获得了我所有的项目资金,除了状态为 'draft' 的资金,从 'open'[=31 重新排序它们=] 到 'closed' 并按 'date_start'.
排列
我需要通过 'asc''announcement_date' 中的另一列重新排序状态为 'announced' 的项目资金'asc' 在不干扰 'open' 到 'closed' 结构的情况下排序没有状态值 'announced'.
这可能吗?有人知道怎么做吗?
谢谢!
我想你想要做的是这样的事情。它将按公告日期先公告状态的所有项目排序,然后按 date_start 对其他所有项目进行排序。
$programmefundings = Programmefunding::where('status', '!=', 'draft')
->orderByRaw("case when status = 'announced' then announcement_date end asc")
->orderBy('date_start', 'desc')->get();
您应该可以使用 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("FIELD(status , 'open', 'announced', 'delayed', 'closed') ASC")->orderBy('date_start', 'desc')->get();
所以它获得了我所有的项目资金,除了状态为 'draft' 的资金,从 'open'[=31 重新排序它们=] 到 'closed' 并按 'date_start'.
排列我需要通过 'asc''announcement_date' 中的另一列重新排序状态为 'announced' 的项目资金'asc' 在不干扰 'open' 到 'closed' 结构的情况下排序没有状态值 'announced'.
这可能吗?有人知道怎么做吗?
谢谢!
我想你想要做的是这样的事情。它将按公告日期先公告状态的所有项目排序,然后按 date_start 对其他所有项目进行排序。
$programmefundings = Programmefunding::where('status', '!=', 'draft')
->orderByRaw("case when status = 'announced' then announcement_date end asc")
->orderBy('date_start', 'desc')->get();
您应该可以使用 IF
语句来完成此操作。
$programmefundings = Programmefunding::where('status', '!=', 'draft')
->orderByRaw("FIELD(status , 'open', 'announced', 'delayed', 'closed') ASC")
->orderByRaw("IF(status = 'announced', accouncement_date, date_start) DESC")
->get();