見出し画像

LaravelでEnumを利用する方法

LaravelでEnumを利用する方法をまとめました。

Enumとは

詳しくはWikipediaや

検索結果を見ていただくとして

私の理解で簡単にいうと
例えばメッセージ機能を作成しており、DBに「未読」「既読」のflagデータをboolean型で格納するとします。
その際に、DBには「0」「1」のように格納されるのですが、表示としては「未読」「既読」としたい場合にenumを利用すると便利だ、ということかなと思います。

↓やりたいことはこんなイメージ


Laravel-enumの利用

それでは実際にLaravel-enumを利用してみます。

composerよりインストールします。下記実行してください。

composer require bensampo/laravel-enum

こちらでインストール完了したら下記実行し、「未読」「既読」用のenumを

php artisan make:enum ReadStateType

すると、『app』ディレクトリ配下に『Enums』というディレクトリが作成され、さらに『ReadStateType.php』というファイルが作成されます。

ReadStateType.phpを開くと下記のように記載されています。

<?php
namespace App\Enums;
use BenSampo\Enum\Enum;
final class ReadStateType extends Enum
{
   const OptionOne = 0;
   const OptionTwo = 1;
   const OptionThree = 2;
}

こちらを下記のように修正します。

<?php
namespace App\Enums;
use BenSampo\Enum\Enum;
final class ReadStateType extends Enum
{
   const Noread = 0;
   const Read = 1;
   /**
    * Get the description for an enum value
    *
    * @param $value
    * @return string
    */
   public static function getValue($value): string
   {
       switch ($value){
           case self::Noread:
               return '未読';
               brake;
           case self::Read:
               return '既読';
               brake;
           default:
               return self::getKey($value);
       }
   }
}

こちら修正し、一旦ReadStateType.phpは完了です。


Viewsで利用する方法

上記設定したenumをViewsで利用します。

//未読と表示
{{\App\Enums\ReadStateType::getValue('0')}}

//既読と表示
{{\App\Enums\ReadStateType::getValue('1')}}

以上です。



読んでいただきありがとうございます。