Railsで言うところのcurrent_user的な立ち回りがLaravelでできないかな
現在laravelでWEBアプリを作っている中で上記のようなことができないものかと考えた。
今回やりたいこととしては、
現在ログインしているユーザー
のmotivationテーブル
のfrequencyカラム
に何が登録されているかを調べ
その値によって反映する内容をViewで変えていくプログラムを書きたい。
つまりif文で条件分岐を定義し、
その値(現在ログインしているユーザー
のmotivationテーブル
のfrequencyカラム
の値)に応じて反映するプログラムを変えたい
(値が1だったらAを出す。値が2だったらBを出す。といった具合)
わかりづらい。。こんな感じで。
@if (ログインユーザーのmotivationテーブルのfrequencyカラムの値 === 1)
{{ $hoge->hoge }}
@endif
Railsだとこう書いていた
Railsで上記を実装しようと考えた場合、ログインユーザーを取得できるcurrent_user
を用いる。
ログインユーザー(current_user)のmotivationテーブルのfrequencyカラムを取得するとなると以下のように書ける
current_user.motivation.frequency
これでログインユーザー(current_user)のmotivationテーブルのfrequencyカラムの値を取得することができ、
if文で条件分岐などによく使っていた。
Laravelではどう書けるか
Laravelで同じように書こうとしてもエラーが発生して書くことができない。(はず)
Auth::user()->motivation->frequency;
Railsで言うところのcurrent_userはLaravelではAuth::user()と書ける。
これを使ってやりたいことを実装できそうなものだがうまくかけない。
実際にやったこと
RailsのようにViewだけでの書き方はいまいちうまく行かなかったので
Controllerを絡ませて書くことにしました。
$user_id = Auth::id();
$hoge = Hoge::where('user_id', $user_id)->get();
foreach ($hoge as $item) {
$hogehoge = $item->frequency;
}
-
Auth::id()
でログインユーザーを取得する -
where句
を使ってHogeテーブル
からログインユーザーが登録したデータを取得する -
foreach文
を使って$hoge
から1つずつレコードを取り出し$item
に入れて回す(今回の場合レコードは1つしかないが一旦これで実装) -
$item
からfrequencyカラム
を取得する
dd($hogehoge);
で見てみると、frequencyカラムの値が取り出せているのがわかるので、これでviewに渡してあげます。
@if ($hogehoge === 1)
@foreach ($trSupportMenu_a as $a)
{{ $a->menu }}
@endforeach
@endif
-
$hogehoge
が1だったらforeach文を実行するようなプログラムになっています。
少し遠回りしてしまいましたが、一応これでやりたいことは実装できそうです。
他になにか良いやり方などございましたらご教示願いますm(_ _)m