【发布时间】:2018-11-18 09:54:09
【问题描述】:
我想对表格条目进行排序。这是 Eloquent 模型。
namespace App;
use Illuminate\Database\Eloquent\Model;
/**
* App\Story
...
* @property string $due_date
* @property string $status late|scheduled|completed
...
*/
class Story extends Model {
...
}
我想要返回故事的顺序是:
- “迟到” 是 ASC(老年人优先)
- DSC 中的“预定”(新的优先)
- “完成”在 DSC 中(新的第一)
所以让我们假设每个状态类型的故事在 db 中有 15 个条目。并且分页限制设置为 20。
所以这里是每个页面的响应
- 首页:按 ASC 顺序排列的 15 个后期故事 + 按 DSC 顺序排列的前 5 个预定故事
- 第二页:剩余 10 个预定故事 + 前 10 个已完成故事(按 DSC 顺序)
- 第三页:剩余 5 个已完成的故事
如果上面提供的信息不充分,请告诉我。谢谢!
【问题讨论】:
-
到目前为止你尝试了什么?
-
@JonasStaudenmeir 我有一个可行的解决方案。但它有两个问题:1. 高度未优化,不适用于更复杂的排序(我们的项目迟早会需要)
-
所以有效的解决方案是:添加一个数字列 factor 存储 -3 表示迟到,2 表示已安排,1 表示已完成。然后在维护行的同时,在更新类型的值时更新值。查询将是排序时间戳(到期日期)*因子 DSC
标签: mysql sql database laravel eloquent