Laravel Eloquent, 排序 whereHas / 宽度数据

Laravel Eloquent, sort whereHas / width datas

这是我的代码:

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,$orderBy$orderDirection 来自视图:

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

$orderDirection 可以有以下值:'asc' 或 'desc'.

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

只需添加

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

在 with 语句中