۱۰ ویژگی مخفی لاراول که تا به امروز نمی دانستید

لاراول یک فریم ورک با ویژگی های بسیار زیاد می باشد با این وجود، تمام این ویژگی ها در منابع معتبر هنوز منتشر نشده است. در این مطلب چند ویژگی را به شما معرفی می کنم که شاید تا به حال ندیده بودید.Get original attributesبعد از ثبت یک رکورد در دیتابیس یا فراخوانی آن شما می توایند خصوصیات رکورد مورد نظر را با روش های زیر مورد استفاده قرار دهید$user = App\User::first(); $user->name; //John$user->name = &quotPeter&quot //Peter$user->getOriginal('name'); //John $user->getOriginal(); //Original $user recordCheck if Model changedچک کردن با استفاده از مدل که آیا پس از واکشی از دیتابیس تغییراتی در فیلدهای رکورد مورد نظر ایجاد شده یا نه. به این مثال توجه کنید$user = App\User::first(); $user->isDirty(); //false $user->name = &quotPeter&quot $user->isDirty(); //trueهمچنین می توانیم چک کنیم که آیا دقیقا در فیلد مورد نظر ما تغییری بعد از واکشی اتفاق افتاده است.$user->isDirty('name'); //true $user->isDirty('age'); //falseGet changed attributesفراخوانی فیلدهایی از رکورد مورد نظر که دچار تغییرات شده اند.$user->getChanges()[ "name" => "Peter", ]نکته : مشاهده این تغییرات در این مثال وابسته به ذخیره مدل یا استفاده همگام سازی تغییرات برگشت داده می شودsyncChanges()Custom deleted_at columnبه صورت پیش فرض لاراول با استفاده از ستون deleted_at حذف های نرم را کنترل می کند اما شما می توانید با مشخص کردن ویژگی DELETED_AT در مدل مورد نظر خود، این مورد را تغییر دهید.class User extends Model { use SoftDeletes; const DELETED_AT = 'is_deleted'; }یا با تعریف یک دسترسی به خصوصیت این مورد را تغییر دهیدclass User extends Model { use SoftDeletes; public function getDeletedAtColumn() { return 'is_deleted'; } }Save models and relationshipsبا استفاده از متد push می توانید یک مدل را به همراه روابط آن را ذخیره کنیدclass User extends Model { public function phone() { return $this->hasOne('App\Phone'); } }$user = User::first(); $user->name = &quotPeter&quot$user->phone->number = '1234567890';$user->push(); // This will update both user and phone record in DBReload fresh modelواکشی دوباره یک ردیف مثل اطلاعات کاربر با استفاده از fresh$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; // JohnReload existing modelباز خوانی دوباره از پایگاه داده وقتی تغییراتی اعمال شده است با استفاده از refresh$user = App\User::first(); $user->name; // John // user record get updated by another thread. eg: 'name' changed to // Peter. $user->refresh(); $user->name; // Peterنکته : refresh همچنین روابط بارگذاری شده مدل موجود را بروزرسانی می کندCheck if models are the sameچک کردن اینکه آیا دو ردیف دارای شناسه یکسان نسبت به هم دارند و هر دو آیا از یک جدول می باشند.$user = App\User::find(1); $sameUser = App\User::find(1); $diffUser = App\User::find(2); $user->is($sameUser); // true $user->is($diffUser); // falseClone a modelبا استفاده از replicate می توانید از یک مدل کپی بردارید و آن را در دیتابیس ذخیره کنید$user = App\User::find(1); $newUser = $user->replicate(); $newUser->save();Specify attributes in find() methodهنگام استفاده از find یا findOrFail شما می توانید خصوصیاتی را تعیین کنید تا به عنوان آرگومان دوم در نظر گرفته شود.$user = App\User::find(1, ['name', 'age']); $user = App\User::findOrFail(1, ['name', 'age']);ما 10 ویژگی مخفی از لاراول را توضیح دادیم که شاید تا به الان به هیچ عنوان استفاده نکرده بودید اگر مطلب مورد نظر برای شما مفید بوده است حتما برای دیگران نیز به اشتراک بگذارید.