Laravelを使っているシステムのソースコードを読んでいて疑問に思ったことがあります。
会員テーブル members があって、type というカラムがあります。type の値は「1は通常会員、2は特別会員」という意味です。
この「1は通常会員、2は特別会員」という値と名前の対応表(自分はコードリストと言っています)が、テーブルmembers のモデルクラス Member.php にこんな感じで書いてありました。
class Member extends Model { public $typeTsujo = 1; public $typeTokubetsu = 2; public $typeCode = [ 1 => '通常会員', 2 => '特別会員', ];
$typeTsujo と $typeTokubetsu は「通常会員の場合は…、特別会員の場合は…」のようなif文の条件でマジックナンバーを書かないようにするために使っています。$typeCode はbladeテンプレートで type を「通常会員」「特別会員」と出力したり、type を選択するラジオボタンを出すのに使っていて、またバリデーションルールでも使っています。
こういうコードリストってモデルクラスに書くのが普通なんでしょうか?「1は通常会員、2は特別会員」というのはテーブルの情報ではない(CREATE TABLE文にその情報はない)ので、自分としてはモデルクラスに書くのはなんか違う気がして。
仮にモデルクラスに書くにしても public なプロパティではなくて const でいいのではないかと思いました。publicプロパティだとただ $typeTsujo や $typeCode を参照するためだけにMemberクラスのインスタンスを作ったりしていて無駄ではないかと。
自分だったらtypeのマスタテーブル作るのは大げさな気がするし、config の下か resource/lang/ja の下にファイル作ってそこに書いたらいいんじゃないかと思ったのですが、どこに定義するのが適切なのでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/23 11:24