سلام وقت بخیر
من برای جدول کاربرانم از enum استفاده کردم
$table->string('gender');
<?php
namespace App\Enums;
enum Gender: string
{
case Boy = "boy";
case **** = "****";
}
مدل user
protected $casts = [
'gender' => Gender::class,
];
برای نمایش جنسیت به فارسی این کارو تو مدل user انجام دادم
public function getGenderAttribute($attribute)
{
switch($attribute)
{
case "boy" :
return "پسر";
break;
case "****" :
return "دختر";
break;
}
}
الان اکیه نمایش میده
ولی برای بخش های دیگه سایتم که با جدول یوزر رابطه داره به مشکل میخورم و ارور زیر نمایش میده وقتی هم اون کد سوییچ رو کامنت میکنم این ارور رفع میشه
Cannot instantiate enum App\Enums\Gender
راه حلی اگه هست لطفا راهنمایی کنید
ایا برای فارسی کردن این روش درسته ؟ یا روش بهتری وجود داره؟
@paradox
خیر ، همونطور که گفتم پی اچ پی این قابلیت رو نداره.
برای استفاده از enum در Laravel، شما نیاز به نصب ماژول PHP Enum دارید. برای این کار، می توانید از Composer استفاده کنید.
دستور زیر رو در ترمینال وارد کنید:
composer require ben-sampo/laravel-enum
پس از نصب باید ماژول Enum را به لیست پرووایدرهای لاراول اضافه کنید. برای این کار، فایل config/app.php را باز کنید و پرووایدر زیر را به لیست پرووایدرها اضافه کنید:
'providers' => [
// ...
BenSampo\Enum\EnumServiceProvider::class,
],
شما می توانید فایل app/Enum را بسازید و انواع enum را در آن تعریف کنید.مثال:
namespace App\Enums;
use BenSampo\Enum\Enum;
final class OrderStatus extends Enum
{
const Pending = 'pending';
const Processing = 'processing';
const Completed = 'completed';
const Cancelled = 'cancelled';
}
با این کار شما می توانید از enum تعریف شده در کلاسهای لاراول استفاده کنید.
سلام
مشکل شما اینه که شما در سیستم شی گرایی Laravel به زبان PHP از یک enum استفاده کردید و به خاطر اینکه زبان PHP از enum پشتیبانی نمیکنه به این مشکل خوردید احتمالا.
بهتره قبل از استفاده از enum در سایر بخش ها، بررسی کنید که ماژول پشتیبانی enum با زبان PHP خود را نصب کردید یا نه.
اگر میخواهید در بخشی از سیستم خود از enum استفاده کنید، میتوانید از پکیج های php-enum یا MyCLabs\Enum که از آنها در پروژه های php استفاده میشود استفاده کنید.
اگر شما از پکیج Laravel Enum برای تعریف enum استفاده میکنید این مشکل احتمالاً به دلیل خطا در تعریف enum شما است. یک راه حل می تواند تعریف مجدد کلاس enum شما باشد. در ضمن، پیشنهاد میکنم پس از اصلاح خطا، بر روی جدول user در پایگاه دادهتان یک ستون با نام "gender" از نوع "string" اضافه کنید، به جای استفاده از enum.
سوالی داشتید در خدمتم.
@MahdiMashayekhi
ممنونم از توضیحاتتون
من از پکیجی استفاده نکردم تو لاراول
به این دلیل هست یعنی ؟ بدون پکیج نمیشه استفاده کرد؟
ماژول پشتیبانی enum به چه صورت باید نصب کنم روی لاراول ؟
یعنی میتونه مشکل از فیلد دیتابیسم باشه ؟
@paradox
خیر ، همونطور که گفتم پی اچ پی این قابلیت رو نداره.
برای استفاده از enum در Laravel، شما نیاز به نصب ماژول PHP Enum دارید. برای این کار، می توانید از Composer استفاده کنید.
دستور زیر رو در ترمینال وارد کنید:
composer require ben-sampo/laravel-enum
پس از نصب باید ماژول Enum را به لیست پرووایدرهای لاراول اضافه کنید. برای این کار، فایل config/app.php را باز کنید و پرووایدر زیر را به لیست پرووایدرها اضافه کنید:
'providers' => [
// ...
BenSampo\Enum\EnumServiceProvider::class,
],
شما می توانید فایل app/Enum را بسازید و انواع enum را در آن تعریف کنید.مثال:
namespace App\Enums;
use BenSampo\Enum\Enum;
final class OrderStatus extends Enum
{
const Pending = 'pending';
const Processing = 'processing';
const Completed = 'completed';
const Cancelled = 'cancelled';
}
با این کار شما می توانید از enum تعریف شده در کلاسهای لاراول استفاده کنید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟