LoginSignup
0
0

More than 1 year has passed since last update.

Railsで言うところのcurrent_user的な立ち回りがLaravelでできないか

Last updated at Posted at 2023-01-17

Railsで言うところのcurrent_user的な立ち回りがLaravelでできないかな

現在laravelでWEBアプリを作っている中で上記のようなことができないものかと考えた。

今回やりたいこととしては、
現在ログインしているユーザーmotivationテーブルfrequencyカラムに何が登録されているかを調べ
その値によって反映する内容をViewで変えていくプログラムを書きたい。

つまりif文で条件分岐を定義し、
その値(現在ログインしているユーザーmotivationテーブルfrequencyカラムの値)に応じて反映するプログラムを変えたい
(値が1だったらAを出す。値が2だったらBを出す。といった具合)

わかりづらい。。こんな感じで。

hoge.blade.php
@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を絡ませて書くことにしました。

testController.php
$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に渡してあげます。

test.blade.php
@if ($hogehoge === 1)
    @foreach ($trSupportMenu_a as $a)
        {{ $a->menu }}
    @endforeach
@endif
  • $hogehogeが1だったらforeach文を実行するようなプログラムになっています。

少し遠回りしてしまいましたが、一応これでやりたいことは実装できそうです。
他になにか良いやり方などございましたらご教示願いますm(_ _)m

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0