может быть, это простая проблема, но для меня, я новичок в Laravel, это проблема, поэтому у меня есть три стола
Статьи, Пользователь, Комментарии. У них есть эти отношения
На странице http://localhost/users/{user_name}
Я хочу получить все статьи и все комментарии, которые принадлежат этому пользователю.
Три модели выглядят так:
пользователь
public function articles()
{
return $this->hasMany('App\Article');
}
public function comments()
{
return $this->hasMany('App\Comment');
}
Статья
public function user()
{
return $this->belongsTo('App\User');
}
public function comments()
{
return $this->hasMany('App\Comment');
}
а также
Комментарий
public function user()
{
return $this->belongsTo('App\User');
}
public function article()
{
return $this->belongsTo('App\Article');
}
Мой метод Controller Show выглядит следующим образом:
public function show(User $user)
{
$user->with(['comments','articles'])->get();
return view('users.show', compact('user', 'comments', 'articles'));
}
В виду у меня есть все что мне нужно
{{ dump($user) }}
{{ dump($user->articles) }}
{{ dump($user->comments) }}
{{ dd() }}
и с foreach я получаю необходимые атрибуты, но как мне создать ссылку, где я могу увидеть ссылку на статью и комментарий к ней
@foreach($user->comments as $comment)
<div class="block">
//article title
<div><a href="{{ url('articles', $comment->articles->title) }}"></a></div>
<div>{{ $comment->comment }}</div>
@endforeach
Чтобы показать статью, я использую название статьи, а не ID.
Спасибо
Первый, 'comments'
а также 'articles'
здесь ничего не делай.
return view('users.show', compact('user', 'comments', 'articles'));
Что касается ссылки,
<a href="{{ url('articles', [ $comment->article ]) }}">{{ $comment->article->title }}</a>
Я решил эту проблему, обновил свой контроллер:
public function show(User $user)
{
$params = Comment::where('user_id', $user->id)->get()
return view('users.show', compact('user', 'params'));
}
Это работает, как мне нужно, но я думаю, что есть лучший способ решить эту проблему.