Saya tidak tahu persis apa yang ingin dicapai oleh kueri Anda, dan di mana Anda memerlukan gabungan luar penuh, tetapi saya akan memulai jawaban ini dengan mengatakan bahwa MySQL tidak memiliki dukungan bawaan untuk gabungan luar penuh. Berdasarkan pertanyaan SO ini , kita dapat menemukan cara alternatif untuk menulis query berikut:
SELECT * FROM t1
FULL OUTER JOIN t2
ON t1.id = t2.id
Ini dapat ditulis ulang sebagai UNION
dari gabungan kiri dan gabungan kanan:
SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
Di Laravel, kita dapat menulis kode berikut untuk mewakili gabungan luar penuh di atas:
$second = DB::table('t2')
->rightJoin('t1', 't1.id', '=', 't2.id')
$first = DB::table('t1')
->leftJoin('t2', 't1.id', '=', 't2.id')
->unionAll($first)
->get();
Sekali lagi, saya tidak tahu mengapa menurut Anda Anda memerlukan dua gabungan luar, tetapi terlepas dari itu, Anda harus dapat mengadaptasi kode dan kueri di atas dan menggunakannya untuk situasi Anda.
Referensi:
- Link ke full outer join di MySQL:Full Outer Join in MySQL
- Tautan ke dokumen pembuat kueri Laravel 5.3:https://laravel.com/docs/5.3/