آموزش Eloquent ORM در لاراول

 آموزش Eloquent ORM در لاراول

object relational mapping  یا ORM سیستمی پیاده سازی شده رابط میان شی و پایگاه داده است به معنی این که هر سطر از جدول برابر یک شی است. با کمک ORM  ما پیاده سازی پایگاه داده ما به اشیا نزدیک تر خواهد بود.

به زبان ساده تر Query Builder روی یک سطر از یک جدول با تمامی روابط سطر مربوطه با سطرهای دیگر از جداول دیگر یک شئ از کلاس مدل می باشد. به عبارت دیگر هر شئ از کلاس مدل با یک سطر از یک جدول ارتباط دارد.

اولین گام در Eloquent ساخت یک model است. هر model با برقراری ارتباط با پایگاه داده اطلاعات لازم برای controller فراهم می کند.در ساختار eloquent هر مدل مرتبط با یک جدول است. هر کلاس model نامی مفرد به ازای نام جمع جدول مربوطه خود دارد و از کلاس Model از مسیر Illuminate\Database\Eloquent\Model ارث بری می کند

 

قوانین پیاده سازی Model در لاراول

 

نام جدول : مدل باید مفرد نام جدول موجود در پایگاه داده باشد. برای مثال جدول Products مدل Product . چون هر instance از کلاس model برابر یک شئ خواهد بود. اگر مجبور به استفاده از مدل یا جدولی با نام متفاوت بودیم باید property زیر با به کلاس مدل بدهیم.

کلید اصلی :  eloquent در نظر می گیرد که کلید اصلی جدول شما id باشد. اگر نام دیگری مد نظر دارید property با نام primaryKey را با نام ستون کلید اصلی به کلاس مدل اضافه کنید.

نکته : هیچ گاه جدولی رو بدون کلید اصلی تعریف نکنید چرا که هر فیلدی که به‌عنوان کلید اصلی انتخاب بشه RDMS روی اون فیلد ایندکس انجام می‌ده و دسترسی به اون table با اون فیلد به شدت سریع‌تر می‌شه.

 Timestamps :  زمان ذخیره سازی و بروزرسانی ردیف (created_at , updated_at) به صورت پیش فرض برای مدل در نظر گرفته می شود و همچنین زمان ساخت migration این دو ستون در جدول موجود می باشد. اگر مایل به استفاده از این دو ستون نیستید property با نام timestamps را برابر با false  قرار دهید.

Fillable : فیلدهایی از شئ که قابل تغییر باشند (CRUD). این فیلد ها را باید در قالب آرایه ای به متغیر fillable موجود در کلاس model بدهیم.

Hidden : فیلدهایی از شئ یا همان ستون هایی از جدول شئ model که قابل تغییر نباشند (CRUD).

class Product extends Model {

    protected $table;

    protected $primaryKey = ‘id’;

    protected $fillable = [];

    protected $hidden = [];

}

 

نکته : برخی از متغیر های protected برای Eloquent Model به صورت پیش فرض از روی مدل ساخته می شوند و نیاز به تعریف مجدد توسط شما ندارند. مثلا متغیر $table به صورت پیش فرض از روی نام جمع مدل تعیین می شود. برخی دیگر نیز مثل fillable و hidden باید از سوی شما تعیین گردد.

ساخت مدل با artisan  

 

برای ساخت model از دستور make:model استفاده می کنیم

 

artisan make:model Product

 

عملیات CRUD:

 

Select :

$product = App\Product::find(1);

$products = App\Product::all();

 

Insert :

$product = new App\Product;

$product->name = ‘Lamy Safari’;

$product->price = 100;

$product->description = ‘Good Fountain Pen’;

$product->status = 1;

$product->save();

 

Update :

 

 

$product = App\Product::find(1);

//Change the value of field for update;

$product->name = ‘mobile’;

$product->price = 1000;

$product->update();

 

Delete :

$product = App\Product::find(1);

$product->delete();