前提
days(曜日名)
todos(予定)
day_todo
上記3つのテーブルで多対多のリレーションを組んである
実現したいこと
bladeで『どのユーザーが』『〇曜日に』『○○を行う』という表示を行いたいので、daysとtodosをwithで紐づけた後、特定のユーザーの情報のみを抽出したい
発生している問題・エラーメッセージ
Undefined variable: user
該当のソースコード
web.php
1Route::get('user/{user}', 'UserController@show')->name('user.show');
UserController.php
1 public function show($user){ 2 $user_info = User::where('id', '=', $user)->first(); 3 $user_todos = Day::with(['todos' => function ($query) { 4 $query->where('create_user_id', '=', $user); 5 }])->get(); 6 return view('users.show',['user_info'=>$user_info,'user_todos'=>$user_todos]); 7 }
試したこと
①「function ($query) {}」の中の$userだけを適当な数字に置き換えた
→エラー解消。2行目の段階では$userはきちんと定義されているが、「function ($query) {}」の中で$userが未定義になってしまっていることがわかる。
②「function ($query) {}」の中に「global $user;」の記述を追加
→エラーは出なくなったが、dd($user);で調べたところ$userの中身がnullになっていたため、解決になっていない。
要は「function ($query) {}」の中に$userを持ち込みたいです。
何か方法があればご教授いただけますと幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。