شرح صفوف ومحتوى الفقرة
تسمح لك نطاقات الاستعلام المحلية بتغليف شروط التصفية والترتيب المتكررة داخل دوال معبرة وقابلة لإعادة الاستخدام مباشرة داخل كلاس النموذج. عبر بدء اسم الدالة بالبادئة scope مثل scopeActive، يمكنك استدعاء دالة active بسلاسة في أي سلسلة استعلام دون تكرار الشروط.
- اصطلاح البادئة (scope Prefix): عرّف الدالة باسم scopePublished داخل النموذج واستدعها بصيغة Post::published في الاستعلام.
- النطاقات الديناميكية (Dynamic Scopes): استقبل معاملات إضافية بعد معامل كائن الباني لبناء فلاتر مرنة قابلة للتخصيص.
- التسلسل السلس (Fluent Chaining): ادمج عدة نطاقات محلية معاً في سلسلة استعلام واحدة واضحة وسهلة القراءة.
PHP
use Illuminate\Database\Eloquent\Builder;
public function scopeActive(Builder $query): void
{
$query->where('is_active', true);
}
$posts = Post::active()->latest()->get();