前提・実現したいこと
PHP(Laravel5.6)でイベントの出席管理のシステムを作っています。
- PHP7.2
- Laravel5.6
- MySQL5.6
会員情報というテーブルとイベント情報というテーブルを作って、イベントに参加した人を中間テーブルに記録しています。
usersテーブル
id | name | age |
---|---|---|
1 | 一郎 | 30 |
2 | 次郎 | 29 |
3 | 三郎 | 28 |
eventsテーブル
id | name | date |
---|---|---|
1 | テスト会1 | 2018/09/01 |
2 | テスト会2 | 2018/09/10 |
user_eventテーブル
|id|user_id|event_id|attendance_status|
|:--|:--:|--:|
|1|1|2|attend|
|2|1|1|absence|
|3|2|1|attend|
|4|2|2|attend|
(※user_eventテーブルのuser_id と event_id は各テーブルのidを外部キーとして作成。)
会員情報とイベント情報はそれぞれ「一覧・詳細・編集・作成」ページを作っています。
イベント情報の「詳細」ページでイベントの参加(attend)しているユーザーを出力したいのですが、出力する方法がわかりません。
該当のソースコード
app/Events.php
class Event extends Model { protected $table = "events"; protected $fillable = [ 'name', 'date', ]; public function users() { return $this->belongsToMany('App\User', 'user_event', 'user_id', 'event_id'); } }
app/Users.php
class User extends Authenticatable { protected $fillable = [ 'name', 'age', ]; public function events() { return $this->belongsToMany('App\Event', 'user_event', 'event_id', 'user_id'); } }
app/Http/Controller/EventController.php
namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\DB; use App\Event; use App\User; class EventController extends Controller { public function show(Event $event, User $user) { $userevents = DB::table('user_event')->get(); foreach ($userevents as $userevent) { $users = $userevent->user; $events = $userevent->event; } return view('events.show', ['event' => $event, 'users' => $users]); } }
resources/views/events/show.blade.php
<h2>{{ __('イベントの参加者') }}</h2> <div class="table-responsive"> <table class="table table-striped"> <thead> <tr> <th>{{ __('名前') }}</th> <th>{{ __('年齢') }}</th> <th></th> </tr> </thead> <tbody> <tr> @foreach ($event->users as $user) <td>{{ $user->pivot->family_name }}</td> @endforeach </tr> </tbody>
出たエラー
Undefined property: stdClass::$user
試したこと
Laravel 5.6 Eloquent:リレーション 多対多
上記ドキュメントを見ながら、
$user = User::find(1); foreach ($user->events as $event) { echo $event->pivot->created_at; }
と記述し、試してみましたが、何も出力されません。
できましたら読むべきLaravelのドキュメントや学ぶべきPHPの概念など、この問題を解決するために抜けている知識をご指摘いただければ幸いです。
何卒よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。