數據列表同時按兩個字段排序

一、問題描述:

users數據表有兩個字段 創建時間 created_at ?真實姓名 real_name

現在展示users的list需要的排序方式為 有real_name的排后面,沒有的排前面;而且兩部分都按created_at desc 排序

id ? ? ? ? created_at ? ? ? ? ? real_name

1 ? ? ? ? ? ?2016-01 ? ? ? ? ? ? ? 40

2 ? ? ? ? ? ?2016-02 ? ? ? ? ? ? ? ?null

3 ? ? ? ? ? ?2016-03 ? ? ? ? ? ? ? 20

4 ? ? ? ? ? ?2016-04 ? ? ? ? ? ? ? ?null

5 ? ? ? ? ? ?2016-05 ? ? ? ? ? ? ? ?30

6 ? ? ? ? ? ?2016-06 ? ? ? ? ? ? ? ?null

期望排序為

id? ? ? ? created_at? ? ? ? ? real_name

6? ? ? ? ? ? 2016-06? ? ? ? ? ? ? ? null

4? ? ? ? ? ? 2016-04? ? ? ? ? ? ? ? null

2? ? ? ? ? ? 2016-02? ? ? ? ? ? ? ? null

5? ? ? ? ? ? 2016-05? ? ? ? ? ? ? ? 30

3? ? ? ? ? ? 2016-03? ? ? ? ? ? ? ? 20

1 ? ? ? ? ? ?2016-01 ? ? ? ? ? ? ? ?40

如果只用 ->orderBy('real_name','asc')->orderBy('created_at','desc')結果為

id? ? ? ? created_at? ? ? ? ? real_name

6? ? ? ? ? ? 2016-06? ? ? ? ? ? ? ? null

4? ? ? ? ? ? 2016-04? ? ? ? ? ? ? ? null

2? ? ? ? ? ? 2016-02? ? ? ? ? ? ? ? null

1? ? ? ? ? ? 2016-01? ? ? ? ? ? ? ? 40

5? ? ? ? ? ? 2016-05? ? ? ? ? ? ? ? 30

3? ? ? ? ? ? 2016-03? ? ? ? ? ? ? ? 20

因為real_name不同 所以有real_name的created_at排序沒有生效

二、解決辦法:

->orderBy(\DB::raw('ISNULL(real_name)'),'desc')->orderBy('created_at','desc')

使用sql判斷real_name是否為空,如果為空就是1,不為空就是0;這樣real_name就只有1和0,是0 的排后面(因為0代表real_name不為空),是1的排前面。

相當于:

id? ? ? ? created_at? ? ? ? ? real_name

6? ? ? ? ? ? 2016-06? ? ? ? ? ? ? ? 1

4? ? ? ? ? ? 2016-04? ? ? ? ? ? ? ? 1

2? ? ? ? ? ? 2016-02? ? ? ? ? ? ? ? 1

5? ? ? ? ? ? 2016-05? ? ? ? ? ? ? ? 0

3? ? ? ? ? ? 2016-03? ? ? ? ? ? ? ? 0

1 ? ? ? ? ? ?2016-01 ? ? ? ? ? ? ? ?0

結束。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,868評論 18 139
  • CREATE TABLE IF NOT EXISTS ecs_order_info (order_id mediu...
    cookie口閱讀 15,740評論 0 16
  • #pragma mark 圖片處理 + (UIImage *)imageFromColor:(UIColor *)...
    idream閱讀 419評論 0 0
  • 早上看了一本書,名字叫《晨間日記》,其中說到晚上寫日記要么是自省,要么是抱怨,感覺還真是呢,昨天有抱怨,今天好像還...
    天外來客人閱讀 1,114評論 2 1
  • 看著流淚,融入溫暖。 執子之手,與子偕老。 相親相愛,永恒畫面。 駐扎熱點,人人稱贊。 情感真摯,不得不服。 ...
    鳴鷗閱讀 242評論 4 6