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

لاراول یک فریمورکیه که پر از ویژگیه ، ممکن شما خیلی از اونها رو توی داکیومنت خودش پیدا نکنید.این جا من بعضی از ویژگی های eloquent رو توی لاراول بهتون میگم .1- دریافت مقادیر اصلی رکورد مدل :بعد از تغییر دادن یه رکورد در eloquent شما میتونید با استفاده از متد getOriginal() مقادیر اصلی این رکورد رو دریافت کنید :$user = App\User::first(); $user->name; //John$user->name = &quotPeter" //Peter$user->getOriginal('name'); //John $user->getOriginal(); //Original $user record2- چک کنید اگر مدل تغییر کرده : (اینو خودم نمیدونستم تازه فهمیدم)چک میکنید اگر مدل یا attribute مدل تغییر کرده است با استفاده از isDirty() :$user = App\User::first(); $user->isDirty(); //false$user->name = &quotPeter" $user->isDirty(); //trueهمچنین میتونید چک کنید attribute تغییر کرده است یا نه ؟$user->isDirty('name'); //true $user->isDirty('age'); //false3- شما همچنین میتونید attribute هایی که تغییر کرده رو با استفاده از متد isChanges() دریافت کنید :$user->getChanges(); //[ // &quotname&quot => &quotPeter&quot, // ]4- توی مدل های لاراول میتونید از softDelete استفاده کنید که یه ستون به جدولتون اضافه میکنه به نام deleted_at حالا شما شاید بخواین این ستون رو نامشو تغییر بدین :class User extends Model { use SoftDeletes; * The name of the &quotdeleted at&quot column. * * @var string */ const DELETED_AT = 'is_deleted'; }یا با استفاده از accessor :class User extends Model { use SoftDeletes; public function getDeletedAtColumn() { return 'is_deleted'; } }5- شما برای اینکه بخواهید یک مدل و مدل رابطه ای با اون رو ذخیره کنید میتونید از متد push() استفاده کنید :class User extends Model { public function phone() { return $this->hasOne('App\Phone'); } } $user = User::first(); $user->name = &quotPeter"$user->phone->number = '1234567890';$user->push(); // This will update both user and phone record in DB6- بعضی وقات ها شما میخواین از یه مدل یه نمونه دیگه داشته باشین ولی مدل اولیه که مقدار دادین از بین نره برای این کار میتونید با استفاده از متد fresh() مدل خودتون رو reload کنید :$user = App\User::first(); $user->name; // John// user record get updated by another thread. eg: 'name' changed to // Peter.$updatedUser = $user->fresh(); $updatedUser->name; // Peter$user->name; // John7- بعضی وقت ها هم هستش شما میخواید یه مدل رو که مقدار دهی کردین برگدونید حالت اولش این کار و میتونید با استفاده از متد refresh() انجام بدید :$user = App\User::first(); $user->name; // John// user record get updated by another thread. eg: 'name' changed to // Peter.$user->refresh(); $user->name; // Peter8- شما میتونید با استفاده از متد is() تعیین کنید دوتا مدل از یه جدول و با یک آی دی هستن ؟$user = App\User::find(1); $sameUser = App\User::find(1); $diffUser = App\User::find(2);$user->is($sameUser); // true $user->is($diffUser); // false9- شما میتونید از یه مدل کلون بگیرید با استفاده از متد replicate() :$user = App\User::find(1); $newUser = $user->replicate();$newUser->save();10- شما میتونید وقتی دارید از متد find() یا findOrFail() استفاده میکنید بهش بگید چه attribute هایی رو میخواید اون فقط همون ها رو واستون میاره :$user = App\User::find(1, ['name', 'age']);$user = App\User::findOrFail(1, ['name', 'age']);امیدوارم واستون مفید باشه ...در ضمن من این مقاله رو اول از اینجا خوندم.