如何在该表中的列不可用时使orderBy ASC

时间:2016-05-14 11:09:17

标签: mysql laravel-5 laravel-5.2

我的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的表中获得优先级。(我在优先级表中也有优先级列)

我正在优先级表中保存服务表详细信息,但是当我第一次优先处理某些服务时,到目前为止没有优先级的服务将首先出现在列表中。

我希望那些到目前为止没有优先顺序的服务终将到来。

1 个答案:

答案 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');