Laravel雄辩的查询与相关表的总和

时间:2018-09-08 10:38:07

标签: laravel eloquent

我有一个表 users posts ,其中有 user_id post_views 列。 在 post_views 中,我保留了帖子显示次数的信息。

现在,在查询中,我想让 user 的所有帖子都为 post_views

我试图做这样的事情:

ConstraintLayout

在我定义的模型中:

User::where(['id'=>$id])->with('posts')->get();

但没有成功。

如何做到?

谢谢

2 个答案:

答案 0 :(得分:4)

您可以使用修改后的withCount()

public function posts()
{
    return $this->hasMany('App\Models\Post');
}

$user = User::withCount(['posts as post_views' => function($query) {
    $query->select(DB::raw('sum(post_views)'));
}])->find($id);
// $user->post_views

答案 1 :(得分:0)

您可以使用

User::withCount('posts')->find($id)

在响应中获取ID为$id和属性posts_count的用户

我不确定->sum('game_plays','AS','totalVies');的意图-如果需要,您需要添加更多上下文

仅需添加一些与显示的代码有关的内容:无需使用id末尾使用where + get()进行查询,就可以查询集合。如果要获取单个结果,请在按ID搜索时使用find