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')}}
以上です。
読んでいただきありがとうございます。