Eloquent ORM للغة PHP: دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو Eloquent ORM ولماذا هو مطلوب؟

\n\n

Eloquent ORM (تعيين الكائنات العلائقية) — هي مكتبة مدمجة للعمل مع قواعد البيانات في إطار عمل PHP Laravel. توفر طريقة أنيقة وبديهية للتفاعل مع قواعد البيانات العلائقية (MySQL, PostgreSQL, SQLite, SQL Server) باستخدام نمط Active Record.

\n\n

لماذا تحتاج Eloquent؟

\n
    \n
  • تجريد SQL: بدلاً من كتابة استعلامات SQL الخام، تعمل مع كائنات PHP. هذا يجعل الكود أنظف وأكثر قابلية للقراءة وأكثر أمانًا.
  • \n
  • Active Record: كل نموذج Eloquent يمثل جدولاً في قاعدة البيانات. مثيل النموذج هو صف في هذا الجدول. يمكنك قراءة وتعديل وحفظ البيانات بمجرد العمل مع خصائص الكائن.
  • \n
  • الحماية من حقن SQL: يستخدم Eloquent PDO (كائنات بيانات PHP) مع استعلامات مُعدة، مما يقوم تلقائيًا بعزل إدخال المستخدم.
  • \n
  • العلاقات: سهولة تعريف واستخدام الروابط بين الجداول (واحد إلى واحد، واحد إلى متعدد، متعدد إلى متعدد، إلخ).
  • \n
  • المجموعات: يتم إرجاع نتائج الاستعلامات في شكل مجموعات — كائنات قوية توفر العديد من الطرق المفيدة لمعالجة البيانات (map, filter, reduce, pluck، إلخ).
  • \n
  • المحولات والموصلات: تسمح بتحويل البيانات عند الحفظ (المحولات) أو عند القراءة (الموصلات) من قاعدة البيانات.
  • \n
\n\n

Eloquent ليست مجرد مكتبة، بل هي جزء أساسي من نظام Laravel البيئي. فهم Eloquent ضروري للتطوير الفعال على هذا الإطار.

\n\n

التثبيت

\n\n

يتم تثبيت Eloquent ORM تلقائيًا مع إطار عمل Laravel. إذا كنت تنشئ مشروع Laravel جديد، فإن Eloquent جاهز للاستخدام.

\n\n

التثبيت عبر Composer (إذا كنت تستخدم Laravel):

\n
composer create-project laravel/laravel example-app\ncd example-app
\n\n

تثبيت Eloquent بدون Laravel (Standalone):

\n

يمكنك استخدام Eloquent خارج Laravel، على سبيل المثال، في مشروعك الخاص. للقيام بذلك، ستحتاج إلى تثبيت الحزمة illuminate/database وإعداد اتصال بقاعدة البيانات.

\n
composer require illuminate/database\ncomposer require illuminate/events // للعمل مع أحداث النماذج (اختياري)
\n\n

مثال على إعداد الاتصال (standalone):

\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Illuminate\\Database\\Capsule\\Manager as Capsule;\n\n$capsule = new Capsule;\n\n$capsule->addConnection([\n    'driver'    => 'mysql',\n    'host'      => 'localhost',\n    'database'  => 'your_database',\n    'username'  => 'your_username',\n    'password'  => 'your_password',\n    'charset'   => 'utf8',\n    'collation' => 'utf8_unicode_ci',\n    'prefix'    => '',\n]);\n\n// إعداد المثيل العام لـ Eloquent\n$capsule->setAsGlobal();\n\n// تشغيل Eloquent\n$capsule->bootEloquent();\n
\n\n

بداية سريعة مع مثال كود

\n\n

لنفترض أن لدينا جدول users في قاعدة البيانات. لننشئ نموذج Eloquent للعمل معه.

\n\n

الخطوة 1: إنشاء النموذج

\n

في Laravel، يتم تخزين النماذج عادةً في app/Models. لننشئ ملف User.php:

\n
<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass User extends Model\n{\n    // Eloquent سيربط هذا النموذج تلقائيًا بجدول 'users'\n    // يتم تحديد اسم الجدول من اسم النموذج بصيغة الجمع (snake_case)\n    // إذا كان الجدول يسمى بشكل مختلف، حدد الخاصية $table\n    // protected $table = 'my_users';\n\n    // حدد الحقول التي يمكن تعبئتها بشكل جماعي (للحماية من التعبئة الجماعية)\n    protected $fillable = ['name', 'email', 'password'];\n}\                    

توصيات