Laravel

LaravelでEnumを使いたい場合は標準で用意はされていないために機能を持ったパッケージを入れる必要があります。
この記事では「bensampo/laravel-enum」を導入する方法と使い方を解説!

「bensampo/laravel-enum」をインストール

Composerで導入

下記コマンドでComposerから入れましょう。

config/app.phpに追加

Laravelのバージョンが5.5未満の場合には「config/app.php」の編集が必要です。
「providers」へ「BenSampo\Enum\EnumServiceProvider」を追加します。

導入はこれだけで完了です。

使い方

今回は例としてMessageモデルのステータスを作ってみます。

コマンドでクラスの生成

下記コマンドを実行します。

「app/Enums/MessageStatus.php」が生成されます。

Enumクラスを編集

生成されたクラスには例として「OptionOne」などが記述してあるので、実際に使うものを定義しましょう。
今回は未読、既読で2種類用意します。

定義された一覧を取得する

一覧を配列で取得することができます。

キーと値をそれぞれ取得

それぞれ変換できます。

モデルで使う

自動で変換するように

DBには整数(今回は0, 1)でして欲しいが何を表しているのかわかりにくいため、自動で変換するようにします。

これによりAPIの場合そのままreturnしてもstatusには「Unread」などが入ります。また、viewでもそのまま出力できます。

また保存する時にも、下記の様にそのままセットしてもDBにはintに変えて保存してくれます。

特にフロントサイドからPOSTされた場合などもそのまま扱えるので便利です。

バリデーション

定義した値以外を弾きたい場合は多いと思います。
下記のようにルールを定義することが可能です。

まとめ

「bensampo/laravel-enum」を導入することでLaravelでEnumを使うことができました。導入も簡単で非常に便利なのでぜひ開発時に利用してみてください。

この記事を書いた人

鳥井 慎太郎
鳥井 慎太郎
Web事業家/ブロガー
毎日楽しい。 個人開発(Webサービス、ゲームアプリ)