计算昨天的用户评论



我有一个user->hasMany-> posts->hasMany ->comments关系。

我想在评论昨天留下并计算评论的不同帖子中获取所有用户评论。

到目前为止我正在做的事情:

$user = User::where("id", $id)->with("comments")->where(["comments"=>function ($a){
   return $a->where("created_At", DB::Raw("YESTERDAY(created_at)"))
}])->get();

,但它返回了我所有的评论。

应该是:

$posts = Post::where("user_id", $id)->with(["comments"=> function ($query){
          $query->where("comments.created_at", Carbon::yesterday());
})->get();
$countComments = $posts->sum(function($query){
   return $query->comments->count();
});

$countComments现在应该给您昨天的用户注释数量。

尝试:

$yesterday = date("Y-m-d", strtotime( '-1 days' ) );
$user = User::where("id", $id)->with("comments")->where(["comments"=>function ($a) use ($yesterday) {
   return $a->whereDate('created_at', $yesterday )
}])->get();

如果要加载所有帖子中计数的注释用户,请使用 withCount()

User::withCount(['postsComments' => function($q) {
    return $q->whereDate('created_at', Carbon::yesterday());
}])
->find($id);

要使它起作用,请定义新的hasManyThrough关系:

public function postsComments()
{
    return $this->hasManyThrough(Comment::class, Post::class);
}

最新更新