【问题标题】:Sort collection based on value of one to many relationship根据一对多关系的值对集合进行排序
【发布时间】:2018-11-20 20:54:44
【问题描述】:

我正在构建一个过滤器功能(已经可以使用)。现在我只想为其添加一个订单功能:按“艺术家姓名”、“艺术品标题”、...

可能的订单值不是此表中的“字段”。我找不到启动此 "orderBy" 查询的方法。我正在寻找的是这样的:

$artworks = $artworks->orderBy(function($q) use($request){
    $q->where('title', 'LIKE', '%artist_name%');
});

但这显然行不通。有没有办法做到这一点? 例如:我希望能够对具有title“艺术家姓名”的艺术品进行排序,按这些记录的value 排序

我有两个表:Artworks & Artwork_data(一对多关系)。

这是我的Artwork_data 表:

【问题讨论】:

标签: php laravel eloquent


【解决方案1】:

您可以将orderByRaw 与条件子句一起使用

->orderByRaw('case when title like %artist_name% then value else somecolumn end asc')

【讨论】:

    猜你喜欢
    • 2017-05-02
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2014-03-08
    • 2016-12-31
    • 1970-01-01
    相关资源
    最近更新 更多