php - Laravel 按特定字符串排序

标签 php laravel sql-order-by

我的 PostgreSQL 上有这样的数据:

背景

id | Size
1  | small
2  | medium
3  | large

艺术

id | name       | background_id
1  | Shine      | 1
2  | Sun        | 3
3  | Mountain   | 3

我想通过 laravel Eloquent 小(小,中,大)的值(value)来获得艺术数据 orderBy background

Art::with( [ 'background' => function( $background ) {
    $background->oderBy( DB::raw( "what is this?" ) );
} ] )->get();

如何解决?

FIELD(type, 'S', 'M', 'L', 'XL')

不工作

最佳答案

您可以使用 CASE WHEN 表达式和 orderByRaw():

$queryOrder = "CASE WHEN Size = 'small' THEN 1 ";
$queryOrder .= "WHEN Size = 'medium' THEN 2 ";
$queryOrder .= "ELSE 3 END";
Art::with('background')
->orderByRaw($queryOrder);
->get();

关于php - Laravel 按特定字符串排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38695408/

相关文章:

php - 在javascript中发送两个参数/数据

php - 如何在 Laravel 上注册后插入另一个表?

laravel - 如何使用Laravel迁移从列中删除唯一约束?

php - 如何通过ajax删除laravel中的记录

mysql 不使用 Order by using DESC 进行排序

mysql - 不支持引用组功能

php - 通过PHP有条件地统计MYSQL列行(多个数据库)并输出数据

javascript - Html2canvas: facebook 插件评论

mysql - 在复杂查询中保存 SELECT 结果的顺序

PHP 将变量 append 到地址栏中的 url