انتقل إلى محتوى الدرس
الدرس 32
دورة إطار العمل Laravel

استعلام وتصفية السجلات بأمان عبر Query Builder في LaravelRetrieving and Filtering Records with Laravel Query Builder

كتابة استعلامات سلسة عبر DB::table وتصفية وترتيب النتائج مع الحماية التلقائية من حقن SQL عبر معاملات PDO وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

يوفر باني الاستعلامات Query Builder في Laravel واجهة برمجية سلسة وموحدة لبناء وتشغيل استعلامات قواعد البيانات عبر الدالة DB::table. يمكنك جلب كافة الصفوف المطابقة كمجموعة عبر دالة get، أو جلب صف واحد عبر first، أو البحث بالمعرف الأساسي عبر find.

  • بدء الاستعلام (DB::table): فتح جلسة استعلام سلسة تستهدف الجدول المحدد داخل قاعدة البيانات.
  • جلب المجموعة (get): تنفيذ الاستعلام وإرجاع كائن Collection يضم الصفوف على هيئة كائنات قياسية.
  • سجل مفرد (first & find): استرجاع أول صف مطابق أو البحث مباشرة برقم المعرف الأساسي id.
مخطط معماري يوضح استعلام وتصفية السجلات بأمان عبر Query Builder في Laravel في إطار العمل Laravel 12
PHP
use Illuminate\Support\Facades\DB;

$users = DB::table('users')->get();
$first = DB::table('users')->first();
$admin = DB::table('users')->find(1);

يؤدي جلب كافة الأعمدة عشوائياً من الجداول التي تضم نصوصاً طويلة إلى استهلاك غير مبرر للذاكرة وعرض النطاق. استخدم دالة select لتحديد الأعمدة المطلوبة فقط، ودالة value لاستخراج خلية مفردة، ودالة pluck لجلب قائمة بقيم عمود واحد.

  • تخصيص الأعمدة (select): قصر الاستعلام على أعمدة محددة مع دعم الأسماء المستعارة عبر كلمة as.
  • قيمة خلية واحدة (value): استخراج القيمة المباشرة لعمود واحد من أول سجل مطابق دون جلب الكائن كاملاً.
  • استخلاص قائمة (pluck): إرجاع مجموعة تضم قيم عمود محدد فقط مع إمكانية فهرستها بعمود آخر.
PHP
$cards = DB::table('products')
    ->select('id', 'name', 'price as unit_price')
    ->get();
$mail = DB::table('users')->where('id', 1)
    ->value('email');
$roles = DB::table('roles')->pluck('name', 'id');

تضيف دالة where شروط التصفية للاستعلام باستخدام ثلاثة معاملات (العمود، المعامل، القيمة) أو معاملين فقط عند فحص التساوي. ولأن Laravel يمرر جميع القيم كمعاملات PDO مربوطة ومفصولة عن جملة SQL، فإن استعلاماتك محمية تلقائياً من ثغرات حقن SQL.

  • ربط الشروط (where): ربط عدة استدعاءات لدالة where يدمج الشروط معاً بمعامل AND المنطقي.
  • شرط التخيير (orWhere): إضافة شرط بمعامل OR مع تفضيل تغليفه داخل دالة مغلقة لضبط أقواس الأولوية.
  • الحماية من الحقن (PDO Binding): إرسال علامات استفهام نائبة في جملة SQL وتمرير مدخلات المستخدم بمعزل عنها.
PHP
$items = DB::table('products')
    ->where('is_active', true)
    ->where('price', '>=', 50)
    ->where(function ($query) {
        $query->where('stock', '>', 0)
              ->orWhere('backorder', true);
    })->get();

بالإضافة إلى المقارنات الأساسية، يوفر Laravel دوال تصفية مخصصة للبحث داخل مجموعة قيم أو نطاق رقمي أو فحص القيم الفارغة. يتيح استخدام whereIn و whereBetween و whereNull توليد جمل SQL قياسية وآمنة دون دمج النصوص يدوياً.

  • البحث في قائمة (whereIn): جلب السجلات التي تطابق قيمة عمودها إحدى القيم الموجودة في المصفوفة.
  • البحث في نطاق (whereBetween): تصفية الصفوف التي تقع قيمتها بين حدين أدنى وأعلى شاملة الطرفين.
  • فحص الفراغ (whereNull): توليد شرط IS NULL أو IS NOT NULL الصحيح برمجياً.
PHP
$orders = DB::table('orders')
    ->whereIn('status', ['paid', 'shipped'])
    ->whereBetween('total', [100, 500])
    ->whereNotNull('paid_at')
    ->get();

للتحكم في ترتيب النتائج وتحديد عددها، اربط دالة orderBy أو الاختصار الزمني latest متبوعاً بدالتي limit و offset. وعندما تحتاج فقط للتحقق من وجود سجل مطابق دون جلب بياناته، استدعِ دالة exists للحصول على نتيجة منطقية سريعة.

  • الفرز والترتيب (orderBy & latest): ترتيب النتائج تصاعدياً أو تنازلياً، وتفرز دالة latest حسب الأحدث إنشاءً.
  • تحديد العدد والإزاحة (limit & offset): قصر النتائج على عدد محدد من الصفوف مع تخطي عدد معين.
  • فحص الوجود (exists): تنفيذ استعلام خفيف جداً يعيد true أو false دون تحميل الصفوف في الذاكرة.
PHP
$recent = DB::table('articles')
    ->where('is_published', true)
    ->latest()
    ->limit(5)
    ->get();
$hasDrafts = DB::table('articles')
    ->where('is_published', false)->exists();

يجمع Query Builder في Laravel بين السرعة العالية لمكتبة PDO وسلاسة الدوال المتسلسلة مع الحماية التلقائية من حقن SQL. اعتمد على هذا الجدول الملخص لاختيار الدالة الأنسب لجلب البيانات وتخصيص الأعمدة وتصفية الصفوف.

وجه المقارنة الهندسيالأسلوب اليدوي أو غير المحميمعيار Laravel 12 الحديث
الحماية من حقن SQLدمج المتغيرات النصية مباشرة داخل جملة الاستعلامربط تلقائي آمن لمعاملات PDO في جميع دوال where
استعلام القوائم والنطاقاتدمج المصفوفات يدوياً بفواصل نصية عرضة للأخطاءدوال جاهزة وآمنة مثل whereIn و whereBetween و whereNull
قراءة قيمة مفردةجلب كافة أعمدة الصف من القاعدة لقراءة حقل واحداستخراج مباشر وسريع عبر دالة value أو قائمة pluck
التحقق من وجود سجلجلب جميع الصفوف في الذاكرة ثم حساب عددهااستعلام منطقي خفيف وفوري عبر الدالة exists
PHP
$topProducts = DB::table('products')
    ->select('id', 'name', 'price')
    ->where('is_active', true)
    ->orderBy('price', 'desc')
    ->limit(10)
    ->get();
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس حول «استعلام وتصفية السجلات بأمان عبر Query Builder في Laravel» مفاهيم استعلام الجداول عبر الواجهة DB، وتحديد الأعمدة واستخراج قوائم القيم، وتصفية السجلات بشروط البحث الآمنة وفق معايير Laravel 12 الحديثة.

الخطوة التالية والدرس القادم

انتقل الآن إلى الدرس التالي «ربط الجداول والدوال التجميعية في Query Builder» للبناء التراكمي على ما تعلمته.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Querying Records استعلام السجلات
كتابة استعلامات سلسة عبر DB::table وتصفية وترتيب النتائج مع الحماية التلقائية من حقن SQL عبر معاملات PDO وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
للمراجعة
02 Querying Tables with DB Facade استعلام الجداول عبر الواجهة DB
المفهوم الهندسي والتطبيق العملي المباشر لقسم استعلام الجداول عبر الواجهة DB في إطار العمل Laravel 12.
للمراجعة
03 Selecting Columns and Plucking Values تحديد الأعمدة واستخراج قوائم القيم
المفهوم الهندسي والتطبيق العملي المباشر لقسم تحديد الأعمدة واستخراج قوائم القيم في إطار العمل Laravel 12.
للمراجعة
04 Filtering Rows with Where Clauses تصفية السجلات بشروط البحث الآمنة
المفهوم الهندسي والتطبيق العملي المباشر لقسم تصفية السجلات بشروط البحث الآمنة في إطار العمل Laravel 12.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 MVC MVC
Model View Controller
النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
للمراجعة
02 CLI CLI
Command Line Interface
واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
للمراجعة
03 HTTP HTTP
Hypertext Transfer Protocol
بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
للمراجعة
04 PSR PSR
PHP Standards Recommendations
المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «استعلام الجداول عبر الواجهة DB» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «تحديد الأعمدة واستخراج قوائم القيم» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من استعلام الجداول عبر الواجهة DB في إطار العمل Laravel 12؟

يسهم استعلام الجداول عبر الواجهة DB في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «تحديد الأعمدة واستخراج قوائم القيم» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة تصفية السجلات بشروط البحث الآمنة بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة تصفية السجلات بشروط البحث الآمنة.

04

لماذا يُعد تطبيق شروط المجموعات والنطاقات والفراغ مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق ترتيب النتائج وتحديد العدد والوجود في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص دوال الاستعلام وتصفية السجلات؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.