我的PostgreSQL上有这样的数据:
背景
id | Size
1 | small
2 | medium
3 | large艺术
id | name | background_id
1 | Shine | 1
2 | Sun | 3
3 | Mountain | 3我想从小的(小的,中的,大的)中获得orderBy背景的艺术数据,用拉拉雄辩
Art::with( [ 'background' => function( $background ) {
$background->oderBy( DB::raw( "what is this?" ) );
} ] )->get();怎么修呢?
FIELD(type, 'S', 'M', 'L', 'XL')没有用
发布于 2016-08-01 09:38:46
您可以使用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();发布于 2016-08-01 09:39:29
我会在后台表中添加一个order字段,这样就可以在添加新字段时更改命令,而不必更改代码。然后,可以使用以下查询:
Art::with('background')
->orderBy('background.order')
->get();https://stackoverflow.com/questions/38695408
复制相似问题