محتويات الدورة

Laravel / أساسي: أسس الطلب والبيانات / الدرس 6

أسس الترحيلات ونماذج Eloquent والاستعلام الآمن

اربط المخطط وخصائص النموذج والمعاملات بـSQLite مملوكة في الذاكرة. ميّز قصد الترحيل وسهولة النموذج والتحقق والقيود الدائمة.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • تعريف مسؤولية المخطط والنموذج منفصلتين.
  • استخدام الربط والحقول القابلة للكتابة المختارة.
  • تحديد حدود المشغل والترحيل.

يغير الترحيل عقد بيانات مشتركاً

تصف الترحيلات تغييرات مصدرة لكنها عمليات فعلية بعواقب. خطط الإضافة والملء والفهرس والافتراض والقيد وفق البيانات والإصدارات. لا يستبدل تحقق النموذج التفرد والمفتاح الدائم. تختلفDDL والمعاملة فلا تعمم سلامة الترحيل من الذاكرة. تبني الأمثلة مخططاً خاصاً لا تاريخ المشروع أو اتصاله.

فصل القيمة من بنية الاستعلام

يربط الباني القيم لا يصلها بـSQL فتحفظ علامة الاقتباس بيانات. لا يصرح الربط بالصف ولا يستبدل عموداً واتجاهاً اعتباطياً؛ احصر البنية. راجع الخام مستقلاً إذ لا ينقي البانيSQL محقونة. يفحص المثال العنوان وعدد الصفوف لا التزامن والمقارنة وخطة الإنتاج.

php بيانات مربوطة بمخططSQLite مملوك
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
$db = new Illuminate\Database\Capsule\Manager();
$db->addConnection(['driver' => 'sqlite', 'database' => ':memory:', 'prefix' => '', 'foreign_key_constraints' => true]);
$db->setAsGlobal();
$db->bootEloquent();
$db->schema()->create('courses', function (Illuminate\Database\Schema\Blueprint $table) {
    $table->id(); $table->string('title'); $table->integer('seats');
});
$db->table('courses')->insert(['title' => "Ada's PHP", 'seats' => 2]);
$query = $db->table('courses')->where('title', "Ada's PHP");
echo $query->getBindings()[0], PHP_EOL;
echo $query->count(), PHP_EOL;
الناتج المتوقع
Ada's PHP
1

تستخدمCapsule الذاكرة فقط بلا اتصال مضبوط أو تاريخ ترحيل أو شبكة.

يصف النموذج الحفظ لا كل قاعدة أعمال

يربط Eloquent السجلات ويوفر التحويل والعلاقة والحدث والنطاق. لا يصرحcast بالكتابة أو يتحقق من الطلب. اختر القابل ومرر الصالح المختار لـcreate وfill. لا تمنع حماية التعيين الإسناد المباشر وليست إذناً كاملاً. أبقِ الملاحظات والمستأجر والسعر والدور للخادم. حدد التوقيت والجدول والمفتاح والتسلسل وفق المخطط.

مطابقة نموذج صغير لجدوله المعلن

يحدد النموذج الجدول وحقلين وغياب التوقيت وتحويل المقاعد. ينشئ سجلاً ويقرأ العدد بوضوح لاختصار التجهيز. لا يوصي بتعطيل التوقيت الحقيقي؛ فهو قرار مجال. لا تمرر كل الطلب لـcreate؛ وتبقى القواعد والإذن والمعاملة والعام مطلوبة.

php نموذج ومخطط صريحان بالذاكرة
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
$db = new Illuminate\Database\Capsule\Manager();
$db->addConnection(['driver' => 'sqlite', 'database' => ':memory:', 'prefix' => '', 'foreign_key_constraints' => true]);
$db->setAsGlobal();
$db->bootEloquent();
$db->schema()->create('courses', function (Illuminate\Database\Schema\Blueprint $table) {
    $table->id(); $table->string('title'); $table->integer('seats');
});
final class CourseRecord extends Illuminate\Database\Eloquent\Model {
    protected $table = 'courses';
    public $timestamps = false;
    protected $fillable = ['title', 'seats'];
    protected $casts = ['seats' => 'integer'];
}
$course = CourseRecord::create(['title' => 'PDO', 'seats' => 2]);
echo $course->title, ' ', $course->seats, ' ', CourseRecord::count(), PHP_EOL;
الناتج المتوقع
PDO 2 1

يثبت حفظ وقراءة صف محلي لا مراقبي التطبيق أو سياساته.

فحص المخطط والنموذج والآثار مستقلة

افحص المكرر والمفتاح الخاطئ بالقيد ثم ترجمة الرفض. ميّز الغياب وnull والنوع. للترحيل جهز قديماً مصطنعاً وافحص القيم والتوافق لا خروج الأمر. لا يعكس التراجع دفعاً أو كلDDL. وضح تحميل العلاقة وعدد الاستعلام مع النمو؛ وتحتاج القاعدة المقصودة والإذن دليلاً إضافياً.

الأخطاء الشائعة وإصلاحها

تمرير كل الطلب لـcreate

لماذا يحدث؟
استبدال سياسة الكتابة بالسهولة.
كيف تصلحه؟
اختيار الصالح وإبقاء حقول الخادم صريحة.
كيف تتجنب تكراره؟
اختبار الحساس الزائد والإسناد المباشر.

افتراض حماية الربط لأسماء الأعمدة

لماذا يحدث؟
خلط المعاملات والبنية.
كيف تصلحه؟
حصر البنية وربط القيم منفصلاً.
كيف تتجنب تكراره؟
مراجعة الخام والترتيب المختار.

اعتبار نجاح الذاكرة سلامة إنتاج

لماذا يحدث؟
إغفال القديم وDDL الخاصة بالمحرك.
كيف تصلحه؟
اختبار المحرك ببيانات قديمة ممثلة.
كيف تتجنب تكراره؟
توثيق التراجع والتوافق والحدود.

اختبر فهمك

1. هل يتحققcast المقاعد من كمية سالبة؟

اعرض الحل المشروح

لا؛ يغير التمثيل وتبقى الحدود مستقلة. ارفض قبل الأثر واحفظ القيد عند الحاجة وافحص النوع والمجال وثبات الحالة.

2. ما الذي لا يفحصه مثال النموذج؟

اعرض الحل المشروح

يغفل التهيئة والسياسة والمراقب والمحرك والتزامن والقديم. أضف تكاملاً للمخاطر لا ضمان حفظ كامل منcreate واحدة.

أهم ما تعلمته

  • القيود وسهولة النموذج والتحقق والإذن أمور مختلفة.
  • استخدم تجهيزاً مملوكاً وبيّن حدود المشغل والتطبيق.

المراجع الرسمية