6 نکته برای بهره وری بیشتر از مدل در لاراول

6 نکته برای بهره وری بیشتر از مدل در لاراول

Php

1 دقیقه

1399/06/31

رضا پارسیان

رضا پارسیان

وقتی که من برای بار اول در لاراول شروع به توسعه کردم،احساس کردم بسیاری از کار ها وجود داره که میتوان به روش بهتری انجام داد.بعد از اشنایی بیشتر با Eloquent چیز های جالبی پیدا کردم که زندگی برنامه نویسی شما رو خیلی ساده تر میکند.

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

1 ابتدا با ایجاد یک مدل شروع کنیم


هنگام ایجاد یک مدل از طریق خط فرمان،می توانید پوشه ای را که باید مدل در آن ساخته شود را مشخص کنید.تمام کاری که شما باید انجام دهید تایپ کردن نام پوشه مقابل نام مدل است.

php artisan make:model Models/Product

2 تعریف ویژگی ها


property $casts راهی برای ارسال ویژگی ها به انواع خاصی از داده ها فراهم می کند.

protected $casts = \[  
    'is\_published' => 'boolean'  
\];

ویژگی is_publish حالا قابل تغیر به Boolean است حتی وقتی که یک داده عددی در پایگاه داده شما ذخیره شده باشد.

انواع مختلفی وجود دارد که میتوانید تبدیل کنید مانند : تاریخ و ساعت.

اشتباهی که اغلبا دیده میشه بین توسعه دهنده های لاراول نمایش تاریخ در فایل Blade به صورت زیر است:

{{$blog->created\_at->format('Y-m-d')}}

بعضا این اتفاق در یک فایل Blade به دفعات بالایی تکرار میشود که این عمل با استفاده از property $cast به سادگی قابل حل شدن است.

برای تبدیل تاریخ و زمان میتوانید از کد زیر استفاده کنید:

protected $casts = \[  
    'published\_at' => 'datetime:Y-m-d',  
\];

3 قابلیت مشاهده


برخی از داده ها نیاز به نمایش در آرایه و Json ندارند،به عنوان مثال رمز عبور.برای این کار میتوایند از property $hide استفاده کنید.

protected $hidden = \[  
    'password'  
\];

property $hide مثل یک لیست سیاه برای عمل می کند.می توانید از property $visible برای درست کردن لیست سفید استفاده کنید.

protected $visible = \[  
    'first\_name',  
    'last\_name'  
\];

وقتی از این property استفاده میکنید به صورت خودکار بقیه داده ها به لیست سیاه منتقل می شوند.

4 لوازم جانبی


بعضی اوقات می خواهید چندین ویژگی را در یکی ترکیب کنید یا فقط می خواهید یک ویژگی را قالب بندی کنید. این کار را می توان با اکسسوری ها در لاراول انجام داد.

فرض کنید شما یک مدل کاربری دارید که دارای نام و نام خانوادگی است. اگر می خواهید نام کامل را نشان دهید ،از این کار را استفاده می کنید:

$this->first\_name . ' ' . $this->last\_name

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

اکسسور روشی است که در مدلی با نحو زیر تعریف می شود:

get\[NameOfAttribute\]Attribute

لوازم جانبی برای نام کامل به این شکل است:

public function getFullNameAttribute() {  
    return "{$this->first\_name} {$this->last\_name}";  
}

برای دسترسی به نام کامل باید accessory را به این صورت صدا کنید :

$user->full\_name

5 جهش دهنده ها


Mutators به شما امکان می دهد مقداری را دستکاری کرده و مقدار آن را روی $attributes یک مدل تنظیم کنید.

public function setLastNameAttribute($value) {  
    $this->attributes\['last\_name'\] = ucfirst($value);  
}

این mutator تابع ucfirst را به نام خانوادگی اعمال می کند و نتیجه را در ویژگی $attributes ذخیره می کند.

$user->last\_name = 'jones'; // Will result in \`Jones\`

6 اضافه کردن مقادیر


هنگامی که یک مدل دارای اتصالات باشد ، آنها به طور پیش فرض به آرایه و نمایش JSON مدل اضافه نمی شوند.برای این کار باید accessor یا رابطه را با $append به مدل اضافه کنیم.

$appends = \[  
    'full\_name'  
\];

فرض کنید که مدل کاربر با مدل بلاگ رابطه ای یک به یک دارد.

public function blogs() {  
    return $this->hasMany(App\\Blog::class);  
}

برای الحاق وبلاگ ها به مدل می توانید به سادگی آنها را به ویژگی $appends اضافه کنید:

$appends = \[  
    'full\_name',  
    'blogs'  
\];

همچنین می توان صفاتی را که باید اضافه شوند ، مشخص کنید. به عنوان مثال ، اگر فقط می خواهید شناسه و عنوان وبلاگ به مدل اضافه شود.

$appends = \[  
    'full\_name',  
    'blogs:id,title'  
\];

این شش موردی است که می خواستم با شما در میان بگذارم تا از مدل های خود بیشترین بهره را ببرید.

اگر این نکات به هر روشی به شما کمک کردند ، حتماً سایر پست های من را نیز بررسی کنید. لطفا در صورت داشتن هرگونه بازخورد یا تمایل به نوشتن نظر در مورد موضوع دیگر لاراول ، نظر خود را ارائه دهید.

🤯

😍

😁

😬

😊

🤨

🙁

🥲

😭

😡

🤬

10 ویژگی Eloquent که شاید نمی دانستید

مقاله بعدی
10 ویژگی Eloquent که شاید نمی دانستید
Postman چیست؟

Postman چیست؟

مقاله قبلی