我的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的表中获得优先级。(我在优先级表中也有优先级列)
我正在优先级表中保存服务表详细信息,但是当我第一次优先处理某些服务时,到目前为止没有优先级的服务将首先出现在列表中。
我希望那些到目前为止没有优先顺序的服务终将到来。
答案 0 :(得分:0)
首先,在这种情况下你应该使用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');