Jeg ved ikke præcis, hvad din forespørgsel forsøger at opnå, og hvor du har brug for en fuld ydre joinforbindelse, men jeg vil begynde dette svar med at sige, at MySQL ikke har nogen indbygget understøttelse for fuld ydre joinforbindelse. Baseret på dette SO-spørgsmål , kan vi finde en alternativ måde at skrive følgende forespørgsel på:
SELECT * FROM t1
FULL OUTER JOIN t2
ON t1.id = t2.id
Dette kan omskrives som en UNION
af en venstre join og en højre join:
SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
I Laravel kan vi skrive følgende kode for at repræsentere ovenstående fulde ydre joinforbindelse:
$second = DB::table('t2')
->rightJoin('t1', 't1.id', '=', 't2.id')
$first = DB::table('t1')
->leftJoin('t2', 't1.id', '=', 't2.id')
->unionAll($first)
->get();
Igen, jeg ved ikke, hvorfor du tror, du har brug for to ydre joinforbindelser, men uanset hvad bør du være i stand til at tilpasse ovenstående kode og forespørgsel og bruge den til din situation.
Referencer:
- Link til fuld ydre deltagelse i MySQL:Fuld ydre deltagelse i MySQL
- Link til Laravel 5.3-forespørgselsbyggerens dokumenter:https://laravel.com/docs/5.3/