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

سلام من توی دیتابیسم اومدم یک فیلد به اسم 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‌ها استفاده کنید تا هر دو شکل رو بتونید استفاده کنید و کدتون توسعت پذیر‌تر باشه

بهترین پاسخ
گرگین ابتکار ۱۷ آبان ۱۴۰۳، ۲۰:۵۴