【Laravel7】belongsTo結合で、関連付けているテーブルのレコードを取り出す。
掲示板サイトで、usersテーブルとpostsテーブルがあるとする。
1人のユーザーに対し、複数の投稿を持つので、関係性は、ユーザーが主で投稿が従である。
従の方に、外部キー(ex = user_idレコード)を設定する。
モデルの関連付けの方法
User.php
public function post()
{
// ユーザーは複数の投稿を持つ
return $this->hasMany('App\Post');
}
Post.php
public function user()
{
// 投稿は1つのユーザーに所属する
return $this->belongsTo('App\User');
}
// userテーブルからnameを取り出すメソッドを作る。
public function getUserName()
{
return $this->user->name;
}
View/index.blade.php
@foreach ($posts as $post)
<tr>
<td>{{ $post->id }}</td>
<td>{{ $post->category->name }}</td>
<td>{{ $post->created_at->format('Y.m.d') }}</td>
<!-- Post.phpで作ったgetUserNameメソッドで、ユーザー名を取得する。 -->
<td>{{ $post->getUserName() }}</td>
<td>{{ $post->subject }}</td>
<td>・{{ $post->body1 }}<br>
・{{ $post->body2 }}<br>
・{{ $post->body3 }}</td>
<td>{!! nl2br(e(Str::limit($post->message, 100))) !!}
@if ($post->comments->count() >= 1)
<p><span class="badge badge-primary">コメント:{{ $post->comments->count() }}件</span></p>
@endif
</td>
<td class="text-nowrap">
<p><a href="{{ action('PostsController@show', $post->id) }}" class="btn btn-primary btn-sm">詳細</a>
</p>
<p><a href="" class="btn btn-info btn-sm">編集</a></p>
<p><a href="" class="btn btn-danger btn-sm">削除</a></p>
</td>
</tr>
@endforeach
参考:
PHPフレームワーク Laravel入門第2版 280p
この記事が気に入ったらサポートをしてみませんか?