MySQL – Convert SQL Query to Laravel

MySQLPHP

I have an sql qyery.

SELECT rt.id, rt.type, rt.total_no_of_rooms
     , SUM(r.no_of_rooms) as "reserved rooms" 
     , rt.total_no_of_rooms - SUM(r.no_of_rooms) as "rooms available"  
FROM Roomtypes rt 
LEFT OUTER JOIN Reservations r 
    ON r.roomtype_id = rt.id 
    AND '2018-04-11' >= r.check_in 
    AND '2018-04-12' <= r.check_out
GROUP BY rt.id, rt.type, rt.total_no_of_rooms

can anyone tell e how to convert it to laravel

Best Answer

This query is generated from midnightcowboycoder.com. Don't forget to replace backtick with a single quote.

DB::select(`rt.id`,`rt.type`,`rt.total_no_of_rooms`)
        ->addSelect(DB::raw(`SUM(r.no_of_rooms) as reserved rooms`))
        ->selectSub(`rt.total_no_of_rooms`, `rooms available`)
        ->selectSub(`-`, `rooms available`)
        ->selectSub(`SUM`, `rooms available`)
        ->from(`Roomtypes as rt`)
        ->join(`Reservations as r`, function($join) {
            $join->on(`r.roomtype_id`, `=`, `rt.id`)
                ->on(`2018-04-11`, `>=`, `r.check_in`)
                ->on(`2018-04-12`, `<=`, `r.check_out`);
            })
        ->groupBy(`rt.id`)
        ->groupBy(`rt.type`)
        ->groupBy(`rt.total_no_of_rooms`)
        ->get();