10 ویژگی Eloquent لاراول که ممکن هست از آنها استفاده نکرده باشید

لاراول یک فریمورکیه که پر از ویژگیه ، ممکن شما خیلی از اونها رو توی داکیومنت خودش پیدا نکنید.

این جا من بعضی از ویژگی های eloquent رو توی لاراول بهتون میگم .

1- دریافت مقادیر اصلی رکورد مدل :

بعد از تغییر دادن یه رکورد در eloquent شما میتونید با استفاده از متد getOriginal() مقادیر اصلی این رکورد رو دریافت کنید :

123$user = App\User::first();
$user->name; //John$user->name = "Peter" //Peter$user->getOriginal('name'); //John
$user->getOriginal(); //Original $user record

2- چک کنید اگر مدل تغییر کرده : (اینو خودم نمیدونستم تازه فهمیدم)

چک میکنید اگر مدل یا attribute مدل تغییر کرده است با استفاده از isDirty() :

123$user = App\User::first();
$user->isDirty();          //false$user->name = "Peter"
$user->isDirty();          //true

همچنین میتونید چک کنید attribute تغییر کرده است یا نه ؟

12$user->isDirty('name'); //true
 $user->isDirty('age'); //false

3- شما همچنین میتونید attribute هایی که تغییر کرده رو با استفاده از متد isChanges() دریافت کنید :

1234$user->getChanges();
//[
//     "name" => "Peter",
 // ]

4- توی مدل های لاراول میتونید از softDelete استفاده کنید که یه ستون به جدولتون اضافه میکنه به نام deleted_at حالا شما شاید بخواین این ستون رو نامشو تغییر بدین :

12345678910class User extends Model
 {
 use SoftDeletes;
 
 * The name of the "deleted at" column.
 *
 * @var string
 */
 const DELETED_AT = 'is_deleted';
 }

یا با استفاده از accessor :

123456789class User extends Model
 {
 use SoftDeletes;
 
 public function getDeletedAtColumn()
 {
 return 'is_deleted';
 }
 }

5- شما برای اینکه بخواهید یک مدل و مدل رابطه ای با اون رو ذخیره کنید میتونید از متد push() استفاده کنید :

برای شما

12345678910class User extends Model
{
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

$user = User::first();
$user->name = "Peter"
1$user->phone->number = '1234567890';
1$user->push(); // This will update both user and phone record in DB
1

6- بعضی وقات ها شما میخواین از یه مدل یه نمونه دیگه داشته باشین ولی مدل اولیه که مقدار دادین از بین نره برای این کار میتونید با استفاده از متد fresh() مدل خودتون رو reload کنید :

12$user = App\User::first();
$user->name;               // John
1// user record get updated by another thread. eg: 'name' changed to // Peter.
12$updatedUser = $user->fresh(); 
$updatedUser->name;       // Peter
1$user->name;              // John

7- بعضی وقت ها هم هستش شما میخواید یه مدل رو که مقدار دهی کردین برگدونید حالت اولش این کار و میتونید با استفاده از متد refresh() انجام بدید :

12$user = App\User::first();
$user->name;               // John
1// user record get updated by another thread. eg: 'name' changed to // Peter.
12$user->refresh(); 
$user->name;              // Peter

8- شما میتونید با استفاده از متد is() تعیین کنید دوتا مدل از یه جدول و با یک آی دی هستن ؟

123$user = App\User::find(1);
$sameUser = App\User::find(1);
$diffUser = App\User::find(2);
12$user->is($sameUser);       // true
$user->is($diffUser);       // false

9- شما میتونید از یه مدل کلون بگیرید با استفاده از متد replicate() :

12$user = App\User::find(1);
$newUser = $user->replicate();
1$newUser->save();

10- شما میتونید وقتی دارید از متد find() یا findOrFail() استفاده میکنید بهش بگید چه attribute هایی رو میخواید اون فقط همون ها رو واستون میاره :

1$user = App\User::find(1, ['name', 'age']);
1$user = App\User::findOrFail(1, ['name', 'age']);

امیدوارم واستون مفید باشه …

در ضمن من این مقاله رو اول از اینجا خوندم.

نویسنده مطلب: پیمان شیبانی

منبع مطلب

به فکر سرمایه‌گذاری هستی؟

با هر سطحی از دانش در سریع‌ترین زمان با آموزش گام به گام، سرمایه گذاری را تجربه کن. همین الان میتونی با لینک زیر ثبت نام کنی و ۱۰ درصد تخفیف در کارمزد معاملاتی داشته باشی

ثبت نام و دریافت جایزه
ممکن است شما بپسندید
نظر شما درباره این مطلب

آدرس ایمیل شما منتشر نخواهد شد.