تكرار السؤال: …
الإجابة المختصرة
الـ Local Scope دالة مساعدة تُستدعى يدوياً لإعادة استخدام شروط الاستعلام، بينما الـ Global Scope شرط يُطبق تلقائياً على جميع استعلامات النموذج ما لم يُلغَ صراحة.
الشرح
الـ Local Scope يبدأ بكلمة scope (مثل scopeActive) ويسمح بكتابة User::active()->get(). أما الـ Global Scope (مثل ميزة SoftDeletes) فيطبق شرطاً دائماً كعزل بيانات المستأجر الحالي (Tenant) أو استبعاد الحسابات المحظورة. يمكن إلغاء الـ Global Scope عند الحاجة باستخدام withoutGlobalScope().
مثال بالكود
// Local scope
public function scopeActive(Builder $query): void {
$query->where('status', 'active');
}
// استخدام: User::active()->get();أخطاء شائعة
- تطبيق Global Scope يحتوي على شروط معقدة دون توفير فهارس (Indexes) مناسبة مما يبطئ كل استعلامات الجدول.