首页 > 解决方案 > 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 中的查询应该有所不同吗?还是我做错了什么?

标签: laravelpostgresqleloquentsql-order-by

解决方案


您必须将您的更改FIELD(...)为:

CASE
    WHEN status='pending' THEN 1
    WHEN status='accepted' THEN 2
    WHEN status='delivered' THEN 3
    WHEN status='rejected' THEN 4
END

推荐阅读