我想对表条目进行排序。这是Eloquent模型。
namespace App;
use Illuminate\Database\Eloquent\Model;
/**
* App\Story
...
* @property string $due_date
* @property string $status late|scheduled|completed
...
*/
class Story extends Model {
...
}
我想要返回故事的顺序是:
因此,假设每个状态类型的故事在db中有15个条目。并且分页限制设置为20。
所以这是每个页面的响应
如果上面提供的信息不充分,请告诉我。谢谢!
答案 0 :(得分:1)
不理想,但没有Thread.CurrentThread.Abort()
列:
factor
当乘以整数时,Story::orderByRaw('FIELD(status, "late", "scheduled", "completed")')
->orderByRaw('(CASE WHEN status = "late" THEN 1 ELSE -1 END) * due_date')
->paginate(10);
会自动转换为字符串(due_date
)。所以它应该比20180609
快。
答案 1 :(得分:0)
在某些情况下,您可能希望为特定列使用自定义顺序sql。为此,您可以使用orderColumn
api。
在此示例中,我们将使用空值对列名进行排序。
use DataTables;
Route::get('user-data', function() {
$model = App\User::query();
return DataTables::eloquent($model)
->orderColumn('name', '-name $1')
->toJson();
});