TransWikia.com

Converter SQL query para Query Builder (Laravel)

Stack Overflow em Português Asked by Luciano Junior on December 9, 2020

Eu gostaria de converter a seguinte query SQL para Query Builder (Laravel):

$duels = DB::select('SELECT r.id, r.name FROM tournaments t
            INNER JOIN duels d ON t.id = d.tournament_id
            INNER JOIN riders r ON d.rider_a_id = r.id OR d.rider_b_id = r.id
            WHERE t.id ='.$id)

Alguém poderia me ajudar?

Desde já agradeço.

One Answer

Fiz a conversão, uma dica as vezes não é montar o um query dessa forma, pois eu por exemplo peguei querys complexas com mais de 10 linhas de query que se tornariam mais de 30 e ficaria ruim a manutenção, mas isso é apenas uma dica pessoal.

Segue a query convertida:

$duels = DB::table('tournaments t')
            ->select('r.id', 'r.name')
            ->join('duels d', 't.id', '=', 'd.tournament_id')
            ->join('riders r', function($join){
                $join->on('d.rider_a_id','=','r.id'); 
                $join->orOn('d.rider_b_id','=','r.id');
            })
            ->where('t.id', '=', $id)
            ->get();

Resultado que ela me retornou usando o toSql();:

select `r`.`id`, `r`.`name` from `tournaments t` inner join `duels d` on `t`.`id` = `d`.`tournament_id` inner join `riders r` on `d`.`rider_a_id` = `r`.`id` or `d`.`rider_b_id` = `r`.`id` where `t`.`id` = ?

Testa ai e da um feedback, pois não tive como testar, para mais informações eu vou deixar o link da documentação:

https://laravel.com/docs/5.7/queries

Answered by Bulfaitelo on December 9, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP