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.name
或 facility.name
或 conciergeries.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 语句中
这是我的代码:
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.name
或 facility.name
或 conciergeries.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 语句中