مكتبة  Eloquent ORM   هي مكتبة خاصة للتعامل مع قواعد البيانات  بسيطة الإستخدام  وتمتلك  العديد من المميزات تعتمد فكرتها على بناء Model لكل جدول في قاعدة البيانات , كمتال على ذالك لدينا جدول  users يحتوي على الاعضاء المشتركين في الموقع  , نقوم بانشاء Model  User  :
| 
1 | classUser extendsEloquent {} | 
هدا كل ما نحتاجه للتعامل مع جدول users بالطريقة التالية :
| 
01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 | // جلب كل الاعضاء المسجلين$users= User::all();// جلب العضو رقم الايدي 1$user= User::find(1);// اضافة عضو جديد$user= User::create(array('name'=> 'رضوان'));// جلب العضو رضوان او اضافة عضو جديد بنفس الاسم ادا لم يكن موجودا$user= User::firstOrCreate(array('name'=> 'رضوان')); | 
أنواع العلاقات :
يمكن ربط جدولين إذا كان كليهما يشتمل على حقل أو أكثر لهما نفس البيانات، وعادة تسمى الحقول في كلا الجدولين بنفس الاسم. علاقة one-to-many علاقة one-to-one علاقة many-to-many Has Many Through Polymorphic One to Many Polymorphic Many to Many
ONE TO ONE
كل سجل في الجدول الرئيسي يقابله سجل واحد في الجدول المرتبط به.
users
| id | name | 
| 1 | رضوان | 
| 2 | ابراهيم | 
| 
1 
2 
3 
4 
5 
6 
7 | classUser extendsEloquent {...publicfunctionaddress(){return$this->hasOne('Address');}...} | 
addresses
| id | user_id | name | country | city | street | 
| 1 | 1 | عنوان اقامة رضوان | المغرب | الراشدية | واد الدهب | 
| 2 | 2 | عنوان اقامة ابراهيم | المغرب | الريش | المقاومة | 
| 
1 
2 
3 
4 
5 
6 
7 | classAddress extendsEloquent {...publicfunctionuser(){return$this->belongsTo('User');}...} | 
ONE TO MANY
وهي الأكثر استخداما، وتعني أن السجل الواحد في جدول البيانات الرئيسي يقابله أكثر من سجل في الجدول الآخر .
postes
| id | title | content | 
| 1 | الموضوع اﻷول | نص الموضوع | 
| 2 | الموضوع الثاني | نص الموضوع | 
| 
1 
2 
3 
4 
5 
6 
7 | classPost extendsEloquent {...publicfunctioncomments(){return$this->hasMany('Comment');}...} | 
comments
| id | post_id | comment | 
| 1 | 1 | التعليق ١ على الموضوع ١ | 
| 2 | 1 | التعليق ٢ على الموضوع ١ | 
| 3 | 2 | التعليق ١على الموضوع ٢ | 
| 4 | 2 | التعليق ٢ على الموضوع ٢ | 
| 
1 
2 
3 
4 
5 
6 
7 | classComment extendsEloquent {    ...    publicfunctionpost(){        return$this->belongsTo('Post');    }    ...} | 
MANY TO MANY
عدة سجلات من الجدول الاول مرتبطة بعدة سجلات من الجدول الثانى وهي علاقة الوهمية اى انها لاتحدث بمفردها يجب اخداث جدول بين هذا الجدولين يعرف هذا الجدول بالجدول الوسيط فتتحول علاقة Many To Many الى علاقتين من نوع belongsToMany
BelongsToMany
| group_id | user_id | 
| 1 | 1 | 
| 1 | 2 | 
| 2 | 1 | 
| 2 | 3 | 
groups
| id | name | description | 
| 1 | مصمم مواقع | انا مصمم مواقع | 
| 2 | مبرمج مواقع | انا مبرمج موافع | 
| 3 | هاكرز | انا مخرب مواقع | 
| 
1 
2 
3 
4 
5 
6 
7 | classGroup extendsEloquent {    ...    publicfunctionusers(){        return$this->belongsToMany('User');    }    ...} | 
users
| id | name | 
| 1 | ابراهيم | 
| 2 | رضوان | 
| 3 | سعيد | 
| 
1 
2 
3 
4 
5 
6 
7 | classUser extendsEloquent {    ...    publicfunctiongroups(){        return$this->belongsToMany('Group');    }    ...} | 
HASMANYTHROUGH
علاقة HasManyThrough  ليست علاقة خقيقية ,هي طريقة للوصول الى جداول  مترابطة بكيفية غير مباشرة .
مثال على دالك
لدينا مستخدم ينتمي الى بلد معين و كل بلد  يمكن ان ياتي منه مستخدمون كثر من جهة اخرى كل مستخدم يمكن ان ينشر العديد من التدوينات. المشكلة الان هي كيف يمكننا الحصول على جميع التدوينات  خسب البلد
عادة نستعمل الطريقة التالية
| 
1 
2 
3 
4 
5 
6 
7 
8 | //with solves the  n+1 issue (http://goo.gl/aQwpQf).$country= Country::with(['user', 'user.post'])->where('code', 'NZ')->get();$posts= [];$country->users->each(function($user) use($posts){    $posts= array_merge($posts, $user->posts);});//$posts now contains all posts from NZ | 
اسطر لا باس بها من الكود علاقة has many through تمكننا من الاستغناء عن كل هدا .
كما لاصتم من قبل جدول التدوينات ليس له علافة مع جدول الدول لكن يمكننا استعمال country_id في جدول المستحدمين للمرور مباشرة الى كل التدوينات المنتمية الى دولة معينة.
كما لاصتم من قبل جدول التدوينات ليس له علافة مع جدول الدول لكن يمكننا استعمال country_id في جدول المستحدمين للمرور مباشرة الى كل التدوينات المنتمية الى دولة معينة.
users
| id | country_id | name | 
| 1 | 1 | رصوان | 
| 2 | 2 | غالي | 
| 3 | 2 | ابراهيم | 
| 
01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 | classUser extendsEloquent {...publicfunctioncountry(){return$this->belongsTo('Country');}publicfunctionposts(){return$this->hasMany('posts');}...} | 
posts
| id | user_id | title | content | 
| 1 | 1 | الموضوع الاول | نص الموضوع الاول | 
| 2 | 3 | الموضوع التاني | نص الموصوع الثاني | 
| 
1 
2 
3 
4 
5 
6 
7 | classPost extendsEloquent {    ...    publicfunctionuser(){        return$this->belongsTo('User');    }    ...} | 
countries
| id | country | code | 
| 1 | Maroc | MA | 
| 2 | Australia | AU | 
| 3 | France | FR | 
| 
01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 | classCountry extendsEloquent {    ...    publicfunctionusers(){        return$this->hasMany('User');    }    publicfunctionposts(){        return$this->hasManyThrough('Post', 'User');    }    ...} | 
 
