Laravel orderBy,列值

时间:2017-08-10 23:32:04

标签: php jquery laravel eloquent sql-order-by

这是我目前的代码:

$programmefundings = Programmefunding::where('status', '!=', 'draft')->orderByRaw("FIELD(status , 'open', 'announced', 'delayed', 'closed') ASC")->orderBy('date_start', 'desc')->get();

所以除了状态' draft' 之外,我的所有programmefundings都会获得,从' open' 重新排序'关闭' 并按' date_start' 排列。

我需要重新安排具有状态&#39;已宣布&#39;的程序基金。通过&#39; asc&#39; 顺序中的另一列&#39; announcement_date&#39; ,而不会打扰&#39;打开&#39; < / strong>到&#39;已关闭&#39; 结构当前有没有影响任何其他没有状态值&#39;宣布&#39;

这可能,有人知道怎么做吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您应该可以使用IF声明执行此操作。

$programmefundings = Programmefunding::where('status', '!=', 'draft')
    ->orderByRaw("FIELD(status , 'open', 'announced', 'delayed', 'closed') ASC")
    ->orderByRaw("IF(status = 'announced', accouncement_date, date_start) DESC")
    ->get();