Как вывести значение из двух объединенных таблиц?
Есть две таблицы, user и post. мне надо вывести user с записями из post которые принадлежат ему.
User table
id: 1
name: Alex
id: 2
name: Ilya
Post table
id: 1
title: Good News
user_id: 1
id: 2
title: Very good news
user_id: 2
id: 3
title: Not bad good news
user_id: 2
Нужен такой езультат:
Alex
Good News
Ilya
Very good news
Not bad good news
Что у меня получчается на данный момент:
Почему-то вместо заголовка выходит объект
Alex
[{"id":1,"title":"Good News.","user_id":1,"}]
Ilya
[{"id":2,"title":"Very good news.","user_id":2,"}]
[{"id":3,"title":"Not bad good news.","user_id":2,"}]
Post model:
public function user()
{
return $this->belongsTo(User::class);
}
User model:
public function posts()
{
return $this->hasMany(Post::class, 'user_id', 'id');
}
Controller
$users = User::with('posts')->get();
$posts = Post::with('user')->get();
return view('index', compact('users', 'posts'));
View:
@foreach ($users as $user)
<h3>{{ $user->name}}</h3>
@foreach ($posts as $post)
<p>{{ $post->title }}</p>
@endforeach
@endforeach
Ответы (1 шт):
Похоже эти данные относятся к модели User. И я очень сомневаюсь, что их вам отдает $post->title.
Alex
[{"id":1,"title":"Good News.","user_id":1,"}]
Ilya
[{"id":2,"title":"Very good news.","user_id":2,"}]
[{"id":3,"title":"Not bad good news.","user_id":2,"}]
Если вы хотите получить пользователя со связанными с ним постами достаточно одного запроса.
Controller
$users = User::with('posts')->get();
return view('index', compact('users'));
View
@foreach ($users as $user)
<h3>{{ $user->name}}</h3>
@foreach ($user->posts as $post)
<p>{{ $post->title }}</p>
@endforeach
@endforeach