laravel - laravel eloquent order by specific value with PostreSQL 数据库
问题描述
我是 Laravel 的 PostgreSQL 新手。我有一个查询,我想按status
列特定值排序,而不是按字母顺序,例如:
1. pending
2. accepted
3. delivered
4. rejected
在我使用 MySQL 之前,它工作正常。将数据库更改为 PostgreSQL 后,查询不起作用:这是我的代码:
$query->orderByRaw('FIELD(status, "pending", "accepted", "delivered", "rejected") ASC')->get();
和错误截图:
它显示pending
在非表格列中;
在 laravel postgres 中的查询应该有所不同吗?还是我做错了什么?
解决方案
您必须将您的更改FIELD(...)
为:
CASE
WHEN status='pending' THEN 1
WHEN status='accepted' THEN 2
WHEN status='delivered' THEN 3
WHEN status='rejected' THEN 4
END
推荐阅读
- c - 多个 for 循环取决于条件
- matlab - 有没有更好的方法来绘制数组?
- javascript - 每次输入字符时输入表单失去焦点
- java - 通过键将值插入到已排序的符号表中
- c# - 为可移动驱动器链接的计算机网络安装 SQL Server?
- angular - 使用另一个应用程序传递的数据填充 Angular 表单
- java - JavaFx IllegalStateException:未设置位置
- html - 如何创建表单模式弹出窗口
- c++ - 除了在 Linux 中使用 readlink 之外,如何获取当前 exe 的路径?
- javascript - 在 ES6 中使用递归 reduce 转换所有子对象