Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como usar a junção completa externa em laravel 5.0?


Não sei exatamente o que sua consulta está tentando alcançar e onde você precisa de uma junção externa completa, mas começarei esta resposta dizendo que o MySQL não tem suporte embutido para junção externa completa. Com base em esta pergunta SO , podemos encontrar uma maneira alternativa de escrever a seguinte consulta:
SELECT * FROM t1
FULL OUTER JOIN t2
    ON t1.id = t2.id

Isso pode ser reescrito como um UNION de uma junção esquerda e uma junção direita:
SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

Em Laravel, podemos escrever o seguinte código para representar a junção externa completa acima:
$second = DB::table('t2')
             ->rightJoin('t1', 't1.id', '=', 't2.id')

$first = DB::table('t1')
            ->leftJoin('t2', 't1.id', '=', 't2.id')
            ->unionAll($first)
            ->get();

Novamente, não sei por que você acha que precisa de duas junções externas, mas independentemente disso, você deve poder adaptar o código acima e consultar e usá-lo para sua situação.

Referências: