شرح صفوف ومحتوى الفقرة
يستبعد الربط الداخلي السجلات الرئيسية التي لا تملك سجلات فرعية، مما قد يخفي العملاء الذين لم يطلبوا بعد أو الأقسام الفارغة. يحافظ استخدام leftJoin على كافة صفوف الجدول الأيسر مع وضع قيمة NULL للحقول الغائبة، وتسمح الدوال المغلقة ببناء شروط ربط مركبة.
- الربط الأيسر (leftJoin): الاحتفاظ بجميع سجلات الجدول الأساسي حتى لو لم يقابلها أي سجل في الجدول الفرعي.
- شروط الربط المتقدمة (JoinClause): تمرير دالة مغلقة لدمج عدة شروط on و where داخل جملة الربط نفسها.
- تصفية آمنة (Scoped Join Filter): وضع الشرط داخل دالة الربط يمنع تحول الربط الأيسر إلى ربط داخلي.
PHP
$users = DB::table('users')
->leftJoin('orders', function ($join) {
$join->on('users.id', '=', 'orders.user_id')
->where('orders.status', '=', 'paid');
})
->select('users.name', 'orders.total')
->get();