【发布时间】: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.name 或 facility.name 或 conciergeries.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