2016-05-14 63 views
1

我Laravel查询如何使排序依据ASC当列不是该表

$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'); 

我从另一台命名为优先获得优先考虑。(我也有优先级表的优先级列)

可用

我在优先表中保存服务表详细信息,但是当我第一次优先考虑某些服务时,那么到目前为止没有优先级的服务将首先列在清单中。

我希望那些至今没有优先考虑的服务最终会到来。

回答

0

首先你应该在这种情况下使用连接。那么你不需要任何东西来订购:

$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');