我的 Laravel 查询
$items = TypeServices::whereIn('id', $serviceIdEvent)
->select('id', 'code', 'name', 'min_price', 'max_price',
DB::raw('(select(priority) from priority WHERE priority.map_id = type_service.id AND priority.map_type_id = ' . $pageType . ' AND priority.occasion_id = ' . $occasionId . ') as priority'))
->orderBy(DB::raw('ISNULL(priority), priority'), 'ASC');
我正在从另一个名为 priority 的表中获取优先级。(我在 priority 表中也有 priority 列)
我在优先级表中保存了服务表的详细信息,但是当我第一次对某些服务进行优先级排序时,直到现在还没有优先级的服务会排在列表的第一位。
我希望那些直到现在还没有优先考虑的服务最终会出现。
在这种情况下,首先您应该使用 join。那么您不需要通过以下方式订购任何其他东西:
$items = TypeServices::whereIn('id', $serviceIdEvent)
->select('id', 'code', 'name', 'min_price', 'max_price', 'priority')
->join('priority', function ($join) use ($pageType, $occasionId) {
$join->on('priority.map_id', '=', 'type_service.id');
$join->on('priority.map_type_id', '=', DB::raw($pageType));
$join->on('priority.occasion_id', '=', DB::raw($occasionId));
})
->orderBy('priority');
Tôi là một lập trình viên xuất sắc, rất giỏi!