2016-05-14 4 views
1

マイ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'); 

私は別のテーブルという名前の優先順位の優先権を取得しています。(私も、優先度テーブルの優先順位の列を持っている)

で利用できない場合ORDERBYのASCにする方法

私はサービステーブルの詳細を優先テーブルに保存していますが、初めてサービスに優先順位を付けるときは、今まで優先順位を決めていないサービスが最初にリストに入っています。

これまで優先順位を付けていないサービスがついにやってきます。

答えて

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'); 
関連する問題