【发布时间】:2014-08-24 16:24:43
【问题描述】:
我希望我的查询首先返回表中列包含特定值的行,然后按特定创建日期排序。
如果我有一个类似这个例子的表格:
- Table: Position
- id - position_value - created_at
- 1 1 2014-07-3
- 2 1 2014-07-3
- 3 1 2014-07-4
- 4 2 2014-07-4
- 5 2 2014-07-5
- 6 2 2014-07-5
并使用该表,我希望我的查询返回包含位置 1 的行,然后创建日期 desc。但行包含位置 2 创建日期升序。
我已经在 laravel 上使用了这个查询
Position::orderBy(DB::raw('FIELD('1', '2')'),asc)->orderBy('created_at',desc)->paginate(29);
但它只返回所有位置 1,2 和 created_at desc,我想要位置 = 1 created_at asc 然后位置 = 2 created_at desc。是否可以只使用一个查询来做到这一点?
谢谢
----------------------------------------------- - - - - - 更新 - - - - - - - - - - - - - - - - - - - - --------------------------
$position = Position::orderBy(DB::raw('(CASE WHEN position_value = 1 THEN created_at END asc, CASE WHEN position_value = 2 THEN created_at END desc)'))->get();
这很好用,但我需要“->paginate(29)”和“Field(1,2)”,有人可以更新答案吗?谢谢
【问题讨论】: