laravel eloquent 使用 PostgreSQL 数据库按特定值排序
laravel eloquent order by specific value with PostreSQL database
我是 Laravel 的 PostgreSQL 新手。我有一个查询,我想按 status
列特定值而不是字母顺序排序,例如:
1. pending
2. accepted
3. delivered
4. rejected
在我使用 MySQL 之前它工作正常。将数据库更改为 PostgreSQL 后,查询不起作用:这是我的代码:
$query->orderByRaw('FIELD(status, "pending", "accepted", "delivered", "rejected") ASC')->get();
及错误截图:
它在 table 列中显示 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
我是 Laravel 的 PostgreSQL 新手。我有一个查询,我想按 status
列特定值而不是字母顺序排序,例如:
1. pending
2. accepted
3. delivered
4. rejected
在我使用 MySQL 之前它工作正常。将数据库更改为 PostgreSQL 后,查询不起作用:这是我的代码:
$query->orderByRaw('FIELD(status, "pending", "accepted", "delivered", "rejected") ASC')->get();
及错误截图:
它在 table 列中显示 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