Tôi không biết chính xác truy vấn của bạn đang cố gắng đạt được điều gì và bạn cần một phép nối bên ngoài đầy đủ ở đâu, nhưng tôi sẽ bắt đầu câu trả lời này bằng cách nói rằng MySQL không có hỗ trợ sẵn có cho phép nối bên ngoài đầy đủ. Dựa trên câu hỏi SO này , chúng tôi có thể tìm ra cách khác để viết truy vấn sau:
SELECT * FROM t1
FULL OUTER JOIN t2
ON t1.id = t2.id
Điều này có thể được viết lại dưới dạng UNION
của phép nối bên trái và phép nối bên phải:
SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
Trong Laravel, chúng ta có thể viết đoạn mã sau để đại diện cho phép nối bên ngoài đầy đủ ở trên:
$second = DB::table('t2')
->rightJoin('t1', 't1.id', '=', 't2.id')
$first = DB::table('t1')
->leftJoin('t2', 't1.id', '=', 't2.id')
->unionAll($first)
->get();
Một lần nữa, tôi không biết tại sao bạn nghĩ rằng bạn cần hai kết nối ngoài, nhưng bất kể bạn phải có thể điều chỉnh mã và truy vấn ở trên và sử dụng nó cho tình huống của bạn.
Tài liệu tham khảo:
- Liên kết đến toàn bộ liên kết bên ngoài trong MySQL: Toàn bên ngoài Tham gia MySQL
- Liên kết đến tài liệu của trình tạo truy vấn Laravel 5.3: https://laravel.com/docs/5.3/