🎄
Laravel PHP 任意項目のデータ取得と表示
任意項目のDB処理の扱いは本当に面倒くさい。特にenum型のデータ。
今回書くのは任意項目のenum型のデータ取得、テーブル結合自体が任意の場合の値取得の方法。
検索しても見つからなかったけど、上司に教えてもらって発見した方法をノートしておく。
例えばこんな風にユーザを保存しているDBの場合
userテーブル
ID(自動採番) | name(必須) | email(必須) | age_option(任意enum)
user_addressテーブル (住所を入力した時だけレコードが作成される)
ID(userテーブルと結合) | prefecture(任意enum) | address(任意)
ユーザ登録画面には、
名前(必須)、メール(必須)、年代(任意)、都道府県(任意)、住所(任意)があり、住所を登録した場合のみuser_addressテーブルのレコードが作成されてuserテーブルと結合する。
こんなケースの場合結合するテーブル名や項目名に?をつけることで値があった時だけ結合、値の取得ができる。
$user->age_option?->value
$user->user_address?->address
$user->user_address?->prefecture?->value
注意
enumの値を取得するには最後にValueをつける。
記載しているテーブル名は必ずしもDBのテーブル名と同じではないので、Modelを見てどの名前で呼び出せるかチェックする。
Discussion