🔥 ۴۰ درصد تخفیف ثبت‌نام دوره‌ها قبل از افزایش قیمت‌ها
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ دانه نعمت‌زاده
ایجاد برچست برای متغییر انگلیسی
زینت محمدی حل شده توسط زینت محمدی

سلام من توی دیتابیسم اومدم یک فیلد به اسم status گذاشتم که داخلش دو تا مقدار active و inactive رو گذاشتم . چطوری بدون اینکه بخوام از کد زیر استفاده کنم اصطلاح فارسی شو بگم

{{ $user->status == '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 }}
دانه نعمت‌زاده ۱۷ آبان ۱۴۰۳، ۱۱:۴۸

بله 

چیزی که من نوشتم یه sample بود و بسته به شرایط بیزینس هرطوری که بخواید میتونید استفاده کنید

زینت محمدی ۱۷ آبان ۱۴۰۳، ۲۰:۵۳

ولی بهتر هست همیشه توی مواردی که یه مقداری ثابت هست از Enum‌ها استفاده کنید تا هر دو شکل رو بتونید استفاده کنید و کدتون توسعت پذیر‌تر باشه

بهترین پاسخ
زینت محمدی ۱۷ آبان ۱۴۰۳، ۲۰:۵۴