رتبه موضوع:
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش Eloquent در لاراول 5
#1
در لاراول می توانیم با استفاده از Eloquent که پیاده سازی شده از الگوی طراحی ActiveRecord است خیلی ساده تر با دیتابیس کار کنیم. در این روش هر جدول در دیتا بیس با یک کلاس Model در ارتباط است.

برای شروع کار با Eloquent باید ابتدا یک کلاس مدل از جدول ایجاد کنیم. کلاس های مدل را داخل پوشه app قرار میدهیم. با تایپ این دستور در ترمینال می توانیم یک مدل ایجاد کنیم :

کد پی‌اچ‌پی:
php artisan make:model User 


نام مدل را همیشه به صورت PascalCase بنویسید. به طور پیش فرض مدل با جدولی که مشابه نام مدل است اما فقط یک s به آخر اضافه شده متناظر است. مثلا مدل User با جدول users در دیتابیس مرتبط است. کلاس ایجاد شده باید محتوای آن به شکل زیر باشد :


کد پی‌اچ‌پی:
<?php namespace App;
use 
Illuminate\Database\Eloquent\Model;
class 
User extends Model {} 


در صورتی که نام جدولی که با کلاس مدل از قانونی که در بالا گفتم تبعیت نمیکند میتوانید در کلاس با استفاده از پراپرتی table نام مورد نظر را ست کنیم.


کد پی‌اچ‌پی:
class User extends Model {
 
 
   protected $table 'my_users';
 
 
   public $timestamps false;
 



همچنین در جداول باید دو ستون تاریخ و زمان به نام های created_at , updated_at وجود داشته باشند که هنگام ایجاد رکورد یا به روزرسانی آن مقداردهی می شوند اما شما می توانید با false قراردادن پراپرتی timestamps از ایجاد این ستون ها در جدول صرف نظر کنید.

حالا می توانیم به راحتی از کلاس مدل برای عملیات های دیتابیس استفاده کنیم. در Eloquent می توانیم از همه متدهای Query Builder استفاده کنیم.

برای بازیابی کلیه رکوردها از متد all استفاده میکنیم.






کد پی‌اچ‌پی:
$users User::all(); 



رکوردی را با داشتن id آن می توانیم با متد find بازیابی کنیم :



کد پی‌اچ‌پی:
$user User::find(1);
 
var_dump($user->name); 



درصورتی که هنگام بازیابی رکوردها مقداری یافت شد و خواستیم یک خطای استثناء تولید شود کلمه OrFail را به انتهای متد موردنظر اضافه میکنیم:



کد پی‌اچ‌پی:
$model User::findOrFail(1);
 
$model User::where('votes''>'100)->firstOrFail(); 



از تمام متدهایی که در Query Builder یاد گرفتیم میتوانیم در Eloquent هم استفاده کنیم:



کد پی‌اچ‌پی:
$users User::where('votes''>'100)->take(10)->get();
 
foreach (
$users as $user)
{
 
   var_dump($user->name);




درج کردن با Eloquent 

ابتدا یک شی از کلاس مدل ایجاد میکنیم و سپس با استفاده از شی ایجاد شده attribute های مدل که همان نام ستونهای جدول هستند را با مقدار جدید مقداردهی میکنیم و سپس با صدازدن متد save رکورد جدید را ایجاد میکنیم.



کد پی‌اچ‌پی:
$user = new User;
 
$user->name 'John';
 
$user->save();
 
$insertedId $user->id



بعد از درج هم میتوانیم به id اختصاص داده شده به این رکورد دسترسی داشته باشیم.


همچنین می توانیم با استفاده از متد create یک رکورد جدید را به جدول اضافه کنیم که به این روش mass-assignment گفته میشود که البته بایستی در کلاس مدل یک پراپرتی protected به نام guarded ایجاد کنیم که یک لیست سیاه می باشد و اجازه تغییر فیلدهای موردنظر را به کاربر نمیدهد. پراپرتی fillable برعکس guarded است و یک لیست سفید برای عملیات mass-assignment ایجاد میکند.



کد پی‌اچ‌پی:
// Create a new user in the database...
$user User::create(['name' => 'John']);
 
// Retrieve the user by the attributes, or create it if it doesn't exist...
$user User::firstOrCreate(['name' => 'John']);
 
// Retrieve the user by the attributes, or instantiate a new instance...
$user User::firstOrNew(['name' => 'John']); 



همچنین می توانیم از متدهای جادویی هم استفاده کنیم که مثلا در مثال دوم رکوردی را با این مقدار بازیابی کند و اگر وجود نداشت آن را ایجاد کند.



به روزرسانی رکوردها
برای آپدیت هم مشابه درج کردن عمل میکنیم فقط با این تفاوت که به جای ایجاد شی از کلاس مدل باید رکورد مورد نظر را ابتدا بازیابی کنید. مثلا در مثال زیر رکورد با id برابر ۱ را بازیابی کرده و سپس فیلد email را با مقدار جدیدی آپدیت میکند :


کد پی‌اچ‌پی:
$user User::find(1);
 
$user->email 'john@foo.com';
$user->save(); 


حذف رکوردها

با استفاده ازمتد delete می توانید رکورد بازیابی شده را به راحتی حذف کنید.


کد پی‌اچ‌پی:
$user User::find(1);
 
$user->delete(); 


همچنین روش آسانتر استفاده از متد destroy است که id رکورد را به ان میدهیم. در صورتی که تعداد id ها بیش از یکی بود هم می توانید در آرایه قرار دهید و به عنوان پارامتر به متد دهید و یا اینکه هرکدام را با ویرگول ازهم جدا کنید.


کد پی‌اچ‌پی:
User::destroy(1);
 
User::destroy([123]);
 
User::destroy(123); 


مباحث پایه کار با Eloquent را در این پست گفتم. سایر مباحث را انشالله در پست های بعدی ادامه خواهم داد

برای اطلاعات بیشتر به اینجا مراجعه کنید


(با تشکر از حامد اریان)
قوانین انجمن لاراولیستا  | شماره تماس :‌09124783045 |‌ تلگرام :‌ 09377869283
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  آموزش اعتبار سنجی در لاراول 5 alihossein 4 762 11-20-2016, 07:12 AM
آخرین ارسال: حمید رﺽا کمالی
  آموزش روتینگ routing در لاراول 5 alihossein 2 1,118 11-12-2016, 04:37 AM
آخرین ارسال: حمید رﺽا کمالی
  آموزش کار با دیتابیس در لاراول 5 alihossein 6 1,535 10-27-2016, 01:01 PM
آخرین ارسال: sempaisaleh
  آموزش Migration در لاراول 5 alihossein 9 1,147 08-15-2016, 04:17 PM
آخرین ارسال: Naser.SherafatiNia
  آموزش فارسی لاراول ۵ alihossein 4 2,851 07-22-2016, 04:16 PM
آخرین ارسال: elham_malekmohamadi
  # سوال : آموزش ساخت ربات تلگرام با پکیج irazasyed/telegram-bot-sdk Bvk.Programmer 0 229 04-25-2016, 04:54 PM
آخرین ارسال: Bvk.Programmer
  درخواست آموزش کار با پکیج intervention/image Bvk.Programmer 6 491 04-18-2016, 05:52 PM
آخرین ارسال: hamo
Rainbow آموزش : پکیچ کاربردی ajax-blade Bvk.Programmer 0 200 02-15-2016, 06:04 PM
آخرین ارسال: Bvk.Programmer
  آموزش Session ها در لاراول 5 alihossein 1 660 01-29-2016, 12:33 PM
آخرین ارسال: SajadDP
  آموزش کنترلر ها در لاراول 5 alihossein 3 963 01-07-2016, 02:28 PM
آخرین ارسال: Bvk.Programmer

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

درباره انجمن فریم ورک لاراول

انجمن لاراولیستا به عشق توسعه دهنده ها و علاقمندان به این فریم ورک محبوب ایجاد شده و امیدواریم با نظرات خوبتون ما رو در بهبود کار یاری کنید. در ضمن خیلی هم خوشحال میشیم شما هم در توسعه این انجمن سهمی داشته باشید.