2016-12-14 5 views
0

Мне нужна рука со следующим.Laravel: настройка необработанных запросов

У меня есть таблица plates, которая содержит, помимо всего прочего, project_id и equipment_status_code_id.

Вот чего я пытаюсь достичь.

Я хотел бы запросить таблицу и получить результаты так же, как это.

---------------------------------------------------- 
| project | Equipment Status code | Number of plates 
----------------------------------------------------- 
| Test |  Cleaning    |   9 
| Test#2 |  Not Cleand   |   3 
|   
----------------------------------------------------- 

Делать что-то вроде этого

return DB::table('plates') 
    ->select('project_id', 'equipment_status_code_id', DB::raw('count(*) as total')) 
    ->groupBy('project_id','equipment_status_code_id') 
    ->pluck('project_id','equipment_status_code_id'); 

возвращается

{ 
    "13": 31, 
    "30": 3, 
    "": 3 
} 

Но это просто не хватает. Я хотел бы добавить еще один слой, как и выше, с именами столбцов.

Каков наилучший способ достичь этого?

Примечание: Я знаю, что мне нужно запросить модель для получения имен кодов состояния вместо id's.

Спасибо за ваше время!

+0

Регистрация 'equipment_status_code_id' с помощью таблицы Thats имеют имена состояния, а затем выберите имя вместо идентификатора – Vuldo

+0

@Vuldo мне нужно всего пластин, а также. Не возражаете ли вы показать мне пример, который содержит проекты, код состояния и N пластин. – user3641381

ответ

0

Попробуйте этот запрос

return DB::table('plates') 
    ->join('project', 'plates.project_id', '=', 'project.id') 
    ->join('equipment', 'plates.equipment_status_code_id', '=', 'equipment.id') 
    ->select('plates.*', 'project.name', 'equipment.equipment_code', DB::raw('count(plates.id) as no_of_plates')) 
    ->groupBy('plates.project_id','plates.equipment_status_code_id') 
    ->get(); 
0

Вы можете попробовать работать с DB::raw("Your SQL statement here"); Таким образом, вы можете написать собственное заявление, как вы пишете в SQL.

Мой пример в Modal:

public static function getMaxOrder() 
    { 

     $orderno = DB::select(DB::raw('select order_no from orders where id = (select max(`id`) from orders)')); 
     return $orderno[0]->order_no; 
    } 
+0

не нужно использовать DB :: raw(), когда мы уже используем DB :: select() –

Смежные вопросы