مُنشئ الاستعلام لارافيل يعامل بفعالية
] عند استخدام 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