Mysql
 sql >> Database >  >> RDS >> Mysql

Come utilizzare il full join esterno in laravel 5.0?

Non so esattamente cosa sta cercando di ottenere la tua query e dove hai bisogno di un join esterno completo, ma inizierò questa risposta dicendo che MySQL non ha supporto integrato per il join esterno completo. Sulla base di questa domanda SO , possiamo trovare un modo alternativo per scrivere la seguente query:

SELECT * FROM t1
FULL OUTER JOIN t2
    ON t1.id = t2.id

Questo può essere riscritto come UNION di un join sinistro e un join destro:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

In Laravel, possiamo scrivere il codice seguente per rappresentare il join esterno completo sopra:

$second = DB::table('t2')
             ->rightJoin('t1', 't1.id', '=', 't2.id')

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

Ancora una volta, non so perché pensi di aver bisogno di due outer join, ma in ogni caso dovresti essere in grado di adattare il codice e la query sopra e usarlo per la tua situazione.

Riferimenti: