يقدّم هذا الدرس كيفية إنشاء نموذج Model قاعدي في Laravel ومن ثم استخدامه. النماذج هي الجزء من بنية MVC الذي تُعالَج فيه البيانات وتُنفَّذ عليها قواعد التطبيق. يتطلّب الدرس تثبيت Laravel وإعداده مع قاعدة البيانات.
نبدأ بإنشاء النموذج باستخدام أمر artisan
على النحو التالي:
php artisan make:model Widget -m
سمّينا النموذج بـWidget
وأضفنا خيار m-
لإنشاء التهجير في نفس الوقت. يختزل الأمر بهذه الطريقة الكثير من الوقت ويجعلنا نركّز على الأهم: عمل النموذج.
ستجد بعد اكتمال تنفيذ الأمر ملفا باسم Widget.php
في مجلّد app
المتفرّع عن مجلّد المشروع، وملفًّا للتهجير في المجلّد database/migrations
. يظهر اسما الملفّيْن في مخرجات تنفيذ الأمر السّابق. نفتح ملفّ Widget.php
للنظر في محتواه:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Widget extends Model { // }
هذا كلّ ما يوجد الملف! هيكل نموذج يمكننا الاستفادة منه لإنشاء ما نريد.
بالانتقال إلى مجلّد database/migrations
نجد ملفًّا يشبه التالي:
2016_03_19_163722_create_widgets_table.php
يظهر في بداية اسم الملف ختم زمني بتاريخ إنشائه. يفترض Laravel أن اسم النموذج كلمة مفردة (Widget
مثلا) تبدأ بحرف كبير Uppercase، في حين يتوقّع أن يكون اسم الجدول Table جمعًا (widgets
) يبدأ بحرف صغير. يمكن تفسير الأمر بأن النموذج يُرجِع نظيرا واحدا لتسجيلات الجدول.
إذا نظرنا إلى ملفّ التهجيرات فسنجد أن لدينا قاعدة يمكننا البناء عليها لأمور أكثر تقدّما:
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateWidgetsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('widgets', function (Blueprint $table) { $table->increments('id'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('widgets'); } }
ينشئ Laravel تلقائيا حقل المعرّف في قاعدة البيانات id
ويجعله يتقدّم تلقائيا فور إدراج تسجيلة جديدة في الجدول (autoincrement
) وذلك باستخدام الدّالة increments
. يضيف Laravel كذلك ختمين زمنيّين لتاريخَيْ إنشاء التسجيلة وتحديثها timestamps
.
سنضيف عمودا Column جديدا إلى قاعدة البيانات؛ لذا نضيف التعليمة التالية إلى دالّة up
ضمن ملفّ التهجير:
$table->string('widget_name')->unique();
يضيف السّطر أعلاه عمودا جديدا للجدول باسم widget_name
من نوع string
ويقيّده بـunique
لكي لا توجد تسجيلتان في الجدول بنفس الاسم. تصبح دالّة up
في ملف التهجير بعد إضافة العمود على النحو التالي:
public function up() { Schema::create('widgets', function (Blueprint $table) { $table->increments('id'); $table->string('widget_name')->unique(); $table->timestamps(); }); }
ثم ننفّذ التهجير:
php artisan migrate
ستلاحظ بعد تنفيذ الأمر إنشاءَ جدول جديد في قاعدة البيانات لديك.
بما أننا نخطّط لإدراج تسجيلات إلى قاعدة البيانات بالتطبيق فيجب أن نضيف الخاصيّة التالية إلى النموذج Widget
:
/** * The attributes that are mass assignable. * * @var array */ protected $fillable = ['widget_name'];
تخبر هذه التعليمة Laravel أن العمود widget_name
يدعم الإسناد الشّامل Mass assignment (تحديد قيم معطياتٍ عدّةٍ مرة واحدة). إن لم نضف هذه التعليمة فلن يمكننا باستخدام التطبيق إدراجُ تسجيلات جديدة في الجدول.
سنستخدم في الدرس التالي النموذج الذي أنشأناه أعلاه مع معمل النماذج Model factory في Laravel لملْء تسجيلات في جدول widgets
.
ترجمة -وبتصرّف- للمقال How to Make a Model in Laravel 5.1 لصاحبه Bill Keck.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.