🔺 شرح Laravel

الهجرات وقاعدة البيانات

ما هي الهجرات؟

الهجرات "نظام تحكّم بإصدارات قاعدة البيانات" — تبني الجداول بالكود بدل الواجهات، فيشارك الفريق نفس البنية ويمكن التراجع عنها.

php artisan make:migration create_posts_table

تعريف الجدول

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration {
    public function up(): void
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('body');
            $table->boolean('published')->default(false);
            $table->foreignId('user_id')->constrained();
            $table->timestamps();
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('posts');
    }
};
  • up(): ما يحدث عند التنفيذ.
  • down(): كيفية التراجع.

أنواع الأعمدة الشائعة

النوعالوصف
id()مفتاح أساسي تلقائي
string('x')نصّ قصير (VARCHAR)
text('x')نصّ طويل
integer('x')عدد صحيح
boolean('x')صح/خطأ
timestamps()created_at + updated_at
foreignId('x')مفتاح خارجي

تنفيذ الهجرات

php artisan migrate            # تنفيذ الجديدة
php artisan migrate:rollback   # التراجع عن آخر دفعة
php artisan migrate:fresh      # حذف الكل وإعادة البناء

مُنشئ الاستعلامات (Query Builder)

بديل عن Eloquent للاستعلامات المباشرة الآمنة:

<?php
use Illuminate\Support\Facades\DB;

$users = DB::table('users')->where('age', '>', 18)->get();

DB::table('users')->insert([
    'name' => 'براء',
    'email' => 'b@mail.com',
]);

DB::table('users')->where('id', 1)->update(['name' => 'محدّث']);
DB::table('users')->where('id', 1)->delete();

💡 Query Builder يستخدم الاستعلامات المُجهّزة تلقائيًّا — آمن ضدّ حقن SQL.

البذور (Seeders)

لملء الجدول ببيانات تجريبية:

php artisan make:seeder PostSeeder
php artisan db:seed

أخطاء شائعة

  • تعديل هجرة نُفّذت بالفعل بدل إنشاء هجرة جديدة.
  • نسيان down() فيتعذّر التراجع.

🎯 التالي: علاقات Eloquent.