سلام من توی دیتابیسم اومدم یک فیلد به اسم status گذاشتم که داخلش دو تا مقدار active و inactive رو گذاشتم . چطوری بدون اینکه بخوام از کد زیر استفاده کنم اصطلاح فارسی شو بگم
میتونید از یه Enum استفاده کنید و یه متد toPersian برای ترجمه اش مثل این:
<?php
enum UserStatus: string {
case Active = 'active';
case Inactive = 'inactive';
public function toPersian(): string {
return match($this) {
self::Active => 'فعال',
self::Inactive => 'غیر فعال',
};
}
}
بعد توی مدل یوزر تون این متد رو قرار بدید که از این Enum استفاده کنه (از cast هم میتونید استفاده کنید(در موردش سرچ کنید))
<?php
use App\Enums\UserStatus;
class User extends Model
{
public function getStatusAttribute($value): string
{
return UserStatus::from($value)->toPersian();
}
}
حالا هر جایی که خواستید اینطوری میتونید وضعیت کاربر رو به فارسی بگیرید :
$user->status
موفق باشید
محمدرسول اصغری۱۷ آبان ۱۴۰۳، ۰۸:۴۷
میشه توی مدل یه گِتِر به نام دلخواه بزنم بعد بگم :
use App\Enums\UserStatus;
class User extends Model
{
public function getParsionStatusAttribute(): string
{
return ($this->value == 'active') ? 'غیر فعال' : 'فعال';
}
}
دیگه نیام اون چیزی که شما اضافه کردید به اسم تابع رو بهش بدم؟؟؟؟؟؟
موقع فراخوانی میگم :
{{ $user->parsionstatus }}
Mehrjoo۱۷ آبان ۱۴۰۳، ۱۱:۴۸
بله
چیزی که من نوشتم یه sample بود و بسته به شرایط بیزینس هرطوری که بخواید میتونید استفاده کنید
محمدرسول اصغری۱۷ آبان ۱۴۰۳، ۲۰:۵۳
ولی بهتر هست همیشه توی مواردی که یه مقداری ثابت هست از Enumها استفاده کنید تا هر دو شکل رو بتونید استفاده کنید و کدتون توسعت پذیرتر باشه