اگر شما از جمله افرادی هستید که از لاراول برای توسعه نرمافزار خود استفاده میکنید، حتماً با تعدادی از اکشنهای رایج در لاراول آشنایی دارید و میدانید که این اکشنهای معروف به سادگی بر روی مدلها قابل اجرا هستند و به سادگی میتوانیم از آنها استفاده کنیم، اما اگر بررسی دقیقتری بر روی اکشنهای لاراول داشته باشیم چیزهای جالبی را پیدا میکنیم. در این مقاله به معرفی تعدادی از اکشنهای کمتر شناخته شده میپردازیم.
1-بررسی وجود داشتن در مدل
برای بررسی وجود یک داده در مدل، شما میتوانید از متدexists() استفاده کنید. این متد به جای خود مدل فقط یک مقدار بولین(true or false) را به عنوان نتیجه برمیگرداند، بنابراین با متدfind() از این جهت تفاوت دارد.
<?php
// Determine if the user exists
User::where('email', 'test@gmail.com')->exists();
2-بررسی حذف شدن در مدل
همانطور که میدانید، ما میتوانیم از SoftDeletes در مدل خود استفاده کنیم. در صورت استفاده از SoftDeletes ، برای بررسی وجود و یا عدم وجود در مدل میتوانیم از متد trashed() استفاده کنیم. این متد ستون deleted_at را بررسی میکند که آیا در آن تاریخی وجود دارد و یا مقدار آن برابر null است.
<?php
// Determine if the model is trashed
$post->trashed();
3-حذف دائمی در مدل
مدلهایی که از SoftDeletes استفاده میکنند، هنگامی که از متد delete() برای حذف در این مدل ها استفاده میشود، دادههای آنها حذف نمیشود و فقط ستون deleted_at در آنها پر میشود. بنابراین در صورتی که بخواهیم دادهای را به صورت دائم حذف کنیم چه کاری باید انجام دهیم؟ در این صورت ما باید از متد forceDelete() استفاده کنیم.
<?php
// Delete the model permanently
$product->forceDelete();
// A little trick, do determine when to soft- and force delete a model
$product->trashed() ? $product->forceDelete() : $product->delete();
4-بازیابی دادههای حذف شده
در صورتی که مدل ما از SoftDeletes استفاده میکند، ما میتوانیم دادههای حذف شده در آن را با استفاده از متد restore() بازیابی کنیم. این متد ستون deleted_at را به مقدار null تغییر میدهد.
<?php
// Restore the model
$food->restore();
5-شبیه سازی یک مدل
در برخی موارد ما نیاز به شبیه سازی یک مدل داریم با استفاده از متد replicate() میتوانیم تمامی ویژگیهای یک مدل را کپی کنیم.
نکته: اگر شما میخواهید تمامی روابط موجود در یک مدل را به خوبی کپی کنید، شما باید آنها را به صورت دستی بازسازی کنید.
<?php
// Deep copy the model
$new = $model->replicate();
نتیجهگیری
Eloquent در لاراول صفات و ویژگیهای خیلی خوبی دارد. بسیاری از این ویژگیها کمتر شناخته شده هستند، نکته مهمی که وجود دارد، بررسی دقیقتر و عمیقتر داکیومنت لاراول و استفاده از نکات جدید در کدهای خود است. شما با انجام این بررسیها میتوانید ویژگیهای جالبی پیدا کنید و آنها را در پروژههای بعدی خود استفاده کنید. در صورتی که متدهای کمتر استفاده شدهی دیگری را میشناسید، لطفاً آنها را در قسمت کامنتها با ما به اشتراک بگذارید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید