"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني الاختيار بكفاءة من الفائزين الفرعيين باستخدام منشئ استعلام Laravel؟

كيف يمكنني الاختيار بكفاءة من الفائزين الفرعيين باستخدام منشئ استعلام Laravel؟

نشر في 2025-03-23
تصفح:622

How Can I Efficiently Select from Subqueries Using Laravel's Query Builder?

مُنشئ الاستعلام لارافيل يعامل بفعالية

]

عند استخدام ORM البليغ لاسترداد البيانات من الفائقين الفرعيين ، غالبًا ما يستخدم المطورون TOSQL () والاستعلامات الأصلية مجتمعة. على الرغم من أن هذه الطريقة فعالة ، إلا أنها ليست بديهية بما فيه الكفاية. فيما يلي حل أكثر كفاءة:

على سبيل المثال ، لاستخراج عدد النتائج من السعة الفرعية التالية:

SELECT COUNT(*) 
FROM (
  SELECT * 
  FROM abc 
  GROUP BY col1
) AS a;

يسمح لنا Laravel بدمج الاستعلامات الأصلية في استعلامات بليغة باستخدام mergebindings . أولاً ، نقوم بإنشاء مثيل منشئ بليغ للمساع الفرعي:

$sub = Abc::where(..)->groupBy(..);

ثم ، نستخدم db :: table لإنشاء جدول جديد يشير إلى المساع الفرعي وتعيين الربط المقابل يدويًا:

$count = DB::table( DB::raw("({$sub->toSql()}) as sub") )
    ->mergeBindings($sub->getQuery()) // 获取底层查询构造器
    ->count();

يضمن هذا النهج تطبيق الربط الصحيح على الاستعلام المدمج ، مما يؤدي إلى النتيجة التي نريدها دون إجراء عمليات سلسلة يدويًا.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3