【问题标题】:Laravel Eloquent, sort whereHas / width datasLaravel Eloquent,排序 whereHas / width 数据
【发布时间】:2020-04-24 00:40:26
【问题描述】:

这是我的代码:

list($orderBy, $orderDirection) = explode('.', request()->get('sort_by'));

        $prestations = Prestation::with([
            'service' => function($query) { 
                $query->select(['id','name']);
            },
            'facility' => function($query) { 
                $query->select(['id','name']);
            },
            'conciergeries.network' => function($query) { 
                $query->select(['id','name']);
            }
        ])
            ->whereHas('service', function ($query) use ($searchService) {
                $query->where('name', 'regexp', "/$searchService/i");
            })  
            ->whereHas('facility', function ($query) use ($searchPartenaire) {
                $query->where('name', 'regexp', "/$searchPartenaire/i");
            })
            ->whereHas('conciergeries.network', function ($query) use ($searchFiliale) {
                $query->where('name', 'regexp', "/$searchFiliale/i");
            })
                ->where('name', 'regexp', "/$search/i")
                ->orderBy($orderBy, $orderDirection)
                ->paginate(50);

我需要在 service.namefacility.nameconciergeries.network.name$orderBy$orderDirection 上订购:

$orderBy 可以具有以下值:'name'、'service'、'facility'、'filiale'。

$orderDirection 可以有这个值:'asc' 或 'desc'。

我尝试在 with 查询或 whereHas 中添加 orderBy,但没有任何效果。 非常感谢。

【问题讨论】:

  • 这可能不是问题,但你为什么要使用regexp 而你可能只使用LIKE %searchval%,如果你可以使用带有ci 的数据库排序规则(不区分大小写)?

标签: php laravel sorting eloquent laravel-query-builder


【解决方案1】:

添加

'service' => function($query) use($orderBy, $orderDirection) { 
            $query->select(['id','name']);
            $query->orderBy($orderBy, $orderDirection)
        },

在 with 语句中

【讨论】:

  • "未定义变量 $orderBy" 与您的解决方案,我尝试像这个函数($query,$orderBy,$orderDirection)一样添加 $orderBy 和 $orderDirection 但也不是一个好的结果。
  • 也不行,没有错误但是排序不正确。
  • 数据是大写还是小写?
猜你喜欢
  • 2021-08-23
  • 1970-01-01
  • 2019-12-28
  • 2017-06-09
  • 2020-09-16
  • 2022-08-19
  • 2014-09-30
  • 2020-12-23
  • 2021-05-25
相关资源
最近更新 更多