環境 laravel6.2
目標、リレーションしたデータをviewに表示
テーブルを作成
chat_messages |
---|
id |
message |
User.php
public function chatMessage()
{
return $this->hasMany('App\ChatMessage');
}
UserController.php
public function index()
{
$users = User::all();
$users->load('chatMessage');
}
home.blade.php
@foreach ($users as $user)
<p>{{ $user->chatMessage->message }}</p>
@endforeach
謎のエラー発生
Property [message] does not exist on this collection instance.
とりあえず配列だけ表示してみる
home.blade.php
@foreach ($users as $user)
<p>{{ $user->chatMessage }}</p>
@endforeach
// 出力結果
{"id":15,"message":"\u3059\u3054\u3044"},{"id":16,"message":"\u30b9\u30cb\u30fc\u30ab\u30fc"}
出力できたものの、なぜかメッセージが文字化けしている。
さらにforeachで回してみる
home.blade.php
@foreach ($users as $user)
@foreach ($user->chatMessage as $chatMessage)
{{ $chatMessage->message }}
@endforeach
@endforeach
これなら出力できました。
ただ仕組みがわかっていないのでよければアドバイスいただけると幸いです。