[SQL & Laravel] Consulta con dos LeftJoin sobre la misma tabla

Home » Laravel » [SQL & Laravel] Consulta con dos LeftJoin sobre la misma tabla
Laravel, Laravel 5, laraver framework, SQL No hay comentarios

Pues eso, que ante la tesitura de llevar estas sentencias de SQL:

LEFT JOIN prstshp_address ad ON (o.id_address_delivery = ad.id_address)
LEFT JOIN prstshp_address ai ON (o.id_address_invoice = ai.id_address)

A Laravel, resulta que dos left join sobre la misma tabla, pues se mete un viaje, ¡kao!. Cosa totalmente lógica, existiendo opciones para hacer esto. Eso si, te puedo adelantar, que en la URL de documentación de Laravel, no vas a encontrar la solución.

¡Aquí si!

La solución:

LEFT JOIN bookings  
               ON rooms.id = bookings.room_type_id
              AND (  bookings.arrival between ? and ?
                  OR bookings.departure between ? and ? )

is

->leftJoin('bookings', function($join){
    $join->on('rooms.id', '=', 'bookings.room_type_id');
    $join->on(DB::raw('(  bookings.arrival between ? and ? OR bookings.departure between ? and ? )'), DB::raw(''), DB::raw(''));
})

¿Asi parece fácil eh? … ¡Tela para encontrarlo! 😉

LEAVE A COMMENT