获取与用户相关的所有帖子的投票表中的“值”总和

时间:2015-09-26 01:37:19

标签: php laravel laravel-5 eloquent eager-loading

我正在尝试获取用户的链接业力(如reddit),并将其显示在他的个人资料页面上。

  

用户:身份证,姓名,电子邮件,密码..

     

帖子:id,user_id,title,link,text ...

     

votes:id,user_id,post_id ......

我需要能够在用户提交的所有帖子的“投票”表格中获得“价值”字段的总和

这就是我现在使用的,快速dd($user)将检索用户的所有帖子和投票。但是在视图上使用{{ $post->votes->sum('value') }}将分别检索每个帖子的总和而不是所有帖子的总和。我怎么能这样做?

public function show($user)
    {
        $user = User::whereName($user)->with('posts.votes')->first();
        return view('user/profile')->with('user', $user);
    }

请注意,dd($user)会检索用户的所有帖子及其投票。

视图(显示与用户相关的帖子的次数,这不是应该发生的事情)

@foreach($user->posts as $post)
   Link Karma: {{ $post->votes->sum('value') }}
@endforeach

1 个答案:

答案 0 :(得分:1)

  

用户:身份证,姓名,电子邮件,密码..

     

帖子:id,user_id,title,link,text ...

     

votes:id,post_id,value,...

App\User模型中:

public function posts(){
    return $this->hasMany('App\Post');
}
public function votes(){
    return $this->hasManyThrough('App\Vote','App\Post');
}

App\Post模型中:

public function votes(){
    return $this->hasMany('App\Vote');
}

然后使用: 用户App\User::find($user_id)->post()->find($post_id)->votes()->sum('value')在帖子$user_id上的总票数为$post_idApp\Post::find($post_id)->votes()->sum('value') $post_id,用于App\User::find($user_id)->votes()->sum('value')个帖子的所有投票总和。 $user_id用户foreach()投票的总和。

您可以使用url()循环浏览任何组合。