Laravelを学習しているものです。
マイページでselect joinを使ってイベント応募者情報を取得して結果をbladeに表示させようとしているのですが
以下のエラーとなりうまく行きません。
Invalid argument supplied for foreach() (View: /../home.blade.php)
php
1 $result = DB::table('event_entry as entry')->select('e.event_id', 'entry.entry_user_id', 'info.name') 2 ->join('event as e', 'e.event_id', '=', 'entry.event_id') 3 ->join('user_info as info', 'info.user_id', '=', 'e.event_user_id') 4 ->where('e.event_user_id', '1111')->get();
ユーザー情報テーブル(user_info)
MySQL
1*************************** 1. row *************************** 2 user_info_id: 0001 3 user_id: 1111 4 name: test1 5 age: 22 6 prefecture: 東京 7 pic_file: /storage/images/user1.jpg 8 regist_time: 2019-02-14 01:28:34 9 update_time: 2019-02-14 01:28:34 10*************************** 2. row *************************** 11 user_info_id: 0002 12 user_id: 2222 13 name: test2 14 age: 39 15 prefecture: 東京 16 pic_file: /storage/images/user2.jpg 17 regist_time: 2019-02-14 01:28:34 18 update_time: 2019-02-14 01:28:34 19*************************** 3. row *************************** 20 user_info_id: 0003 21 user_id: 3333 22 name: test3 23 age: 26 24 prefecture: 秋田 25 pic_file: /storage/images/user3.jpg 26 regist_time: 2019-02-14 01:28:34 27 update_time: 2019-02-14 01:28:34 28
イベントテーブル(event)
MySQL
1*************************** 1. row *************************** 2 event_id: 0001 3event_user_id: 1111 4 title: 飲み会 5 regist_time: 2019-02-14 00:52:34 6 update_time: 2019-02-14 00:52:34 7*************************** 2. row *************************** 8 event_id: 0002 9event_user_id: 2222 10 title: 映画鑑賞 11 regist_time: 2019-02-14 00:52:34 12 update_time: 2019-02-14 00:52:34
イベント応募テーブル(event_entry)
MySQL
1*************************** 1. row *************************** 2event_entry_id: id002 3 event_id: 0001 4 entry_user_id: 3333 5 regist_time: 2019-02-22 22:07:22 6 update_time: 2019-02-22 22:07:22
UserController.php
php
1class UserController extends Controller 2{ 3 4 public function showMyPage(){ 5 6 $myID = auth()->user()->user_id; 7 8 try { 9 10 $eventEntry = DB::table('event_entry as entry')->select('u.user_id', 'e.event_id', 'u.name','u.age') 11 ->join('event as e', 'e.event_id', '=', 'entry.event_entry_id') 12 ->join('user as u', 'u.user_id', '=', 'entry.entry_user_id') 13 ->where('e.event_user_id', $myID)->get(); 14 15 return view('home',[ 16 'event_entry_info'=>$eventEntry, 17 ]); 18 } catch (\PDOException $e){ 19 return redirect()->back()->withErrors('DB検索に失敗しました。'); 20 } 21 22 } 23 24}
home.blade.php
php
1(中略) 2<body> 3 @if(isset($event_entry_info)) 4 @foreach($event_entry_info as $member) 5 ユーザー名:{{ $member-> name}} 6 年齢:{{ $member-> age}} 7 @endforeach 8 @endif 9</body>
bladeにて$event_entry_infoの中身を出力したところ以下のような表示となりました。
[{"user_id":3333,"name":"\u30c6\u30b9\u30c8\u30e6\u30fc\u30b6\u30fc0","age":26}]
foreachの$event_entry_infoの前に(array)をつけるとInvalid argument supplied for foreach()は解消されるのですが、値を表示するところで以下のエラーとなります。
Trying to get property of non-object
$memberをddを使って表示させたところ以下の状態となります。
"[{"user_id":3333,"name":"\u30c6\u30b9\u30c8\u30e6\u30fc\u30b6\u30fc0","age":26}]"
Laravelに詳しい方がいましたらご回答いただけないでしょうか? よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー