Как я могу запросить этот запрос MySQL в контроллере Laravel - PullRequest
0 голосов
/ 14 октября 2019

Извините за этот вопрос новичка, я не знаю, как преобразовать этот запрос mysql в конструктор запросов laravel, пожалуйста, проверьте мой запрос sql. Заранее спасибо, ребята

SELECT vehicle_monitoring.id                              AS monitoring_id, 
       Sum(vehicle_monitoring_details.distance_travelled) AS total_distance, 
       Sum(CASE 
             WHEN vehicle_monitoring_details.purpose = 'Business' THEN 
             vehicle_monitoring_details.distance_travelled 
           END)                                           AS distance_business, 
       Sum(CASE 
             WHEN vehicle_monitoring_details.purpose = 'Private' THEN 
             vehicle_monitoring_details.distance_travelled 
           END)                                           AS distance_private 
FROM   vehicle_monitoring 
       JOIN vehicle_monitoring_details 
         ON vehicle_monitoring_details.vehicle_monitoring_id = 
            vehicle_monitoring.id 
GROUP  BY vehicle_monitoring.id 

1 Ответ

0 голосов
/ 14 октября 2019

Попробуй это. Я не проверял это, но должно работать нормально. Спросите, есть ли у вас какие-либо разъяснения или проблемы:

DB::table('vehicle_monitoring')
->join('vehicle_monitoring_details', 
       'vehicle_monitoring_details.vehicle_monitoring_id', 
                                 '=', 'vehicle_monitoring.id')
->groupBy('vehicle_monitoring.id')
->select('vehicle_monitoring.id AS monitoring_id', 
    DB::Raw('Sum(vehicle_monitoring_details.distance_travelled) AS total_distance'), 
    DB::Raw("Sum(CASE 
         WHEN vehicle_monitoring_details.purpose = 'Business' THEN 
         vehicle_monitoring_details.distance_travelled 
          END) AS distance_business"),
    DB::Raw("Sum(CASE 
         WHEN vehicle_monitoring_details.purpose = 'Private' THEN 
         vehicle_monitoring_details.distance_travelled 
       END) AS distance_private")

  )->get();
...