【发布时间】:2016-03-15 16:58:41
【问题描述】:
我有 3 个数据库表。
users
id - integer
username - string
post
id - integer
user_id - integer
topic - string
comments
id - integer
user_id - integer
post_id - integer
我在视图中所做的是循环浏览用户通过执行类似操作创建的所有帖子
Post::where('user_id', Auth::user()->id)->get();
在每个帖子中,其他用户可以对其发表评论。我想在帖子上显示一个计数,它唯一地计算有多少用户对该帖子发表了评论。我认为创建 hasManyThrough 关系在这里可以工作,但我继续为用户获得“0”计数。
用户模型:
class User extends Model {
public function post()
{
return $this->hasMany('App\Post')
}
public function comment()
{
return $this->hasMany('App\Comment', 'user_id')
}
}
帖子模型:
class Post extends Model {
public function user()
{
return $this->belongsTo('App\User')
}
public function comment()
{
return $this->hasMany('App\Comment')
}
// I thought this method below would return the users who had commented on the post
public function commenters()
{
return $this->hasManyThrough('App\User', 'App\Comment', 'user_id', 'username');
}
}
评论模型:
class Comment extends Model {
pubic function user()
{
return $this->belongsTo('App\User')
}
public function post()
{
return $this->belongsTo('App\Post')
}
}
所以最终结果应该是我猜的这样的结果?
查看:
<span>{{ $model->modelmethod->count() }}</span>
你们对此有何看法?这是正确的方法吗?或者你有什么不同的推荐吗?
【问题讨论】:
标签: laravel orm laravel-5 eloquent