Ik weet niet wat je vraag precies probeert te bereiken, en waar je een volledige outer join nodig hebt, maar ik zal dit antwoord beginnen door te zeggen dat MySQL geen ingebouwde ondersteuning heeft voor volledige outer join. Gebaseerd op deze SO-vraag , kunnen we een alternatieve manier vinden om de volgende vraag te schrijven:
SELECT * FROM t1
FULL OUTER JOIN t2
ON t1.id = t2.id
Dit kan worden herschreven als een UNION
van een left join en een right 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
In Laravel kunnen we de volgende code schrijven om de bovenstaande volledige outer join weer te geven:
$second = DB::table('t2')
->rightJoin('t1', 't1.id', '=', 't2.id')
$first = DB::table('t1')
->leftJoin('t2', 't1.id', '=', 't2.id')
->unionAll($first)
->get();
Nogmaals, ik weet niet waarom je denkt dat je twee outer joins nodig hebt, maar hoe dan ook, je zou de bovenstaande code en query moeten kunnen aanpassen en gebruiken voor jouw situatie.
Referenties:
- Link naar volledige outer joins in MySQL:Full Outer Join in MijnSQL
- Link naar Laravel 5.3 querybuilder-documenten:https://laravel.com/docs/5.3/