[英]Three tables in Laravel 5 with help Eloquent models
也许这是一个简单的问题,但对我来说,我是Laravel的新手吗,这是问题,所以我有3张桌子
文章,用户,评论。 他们有这种关系
在页面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'));
}
它的工作方式如我所需要,但我认为有更好的方法来解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.