我遇到了一个奇怪的问题,我无法找到答案如何解决。
例如,我在社交网站上有评论系统,对状态或图片或其他内容的父评论有无限级别的回复。
所以我用 $ q-> withCount计算回复('回复'); 我有一个globalScope来检查用户是否处于非活动状态(活动1或0)。它完美地工作,没有显示不活动的用户评论和他的孩子子评论,但它确实计算错误的总回复数。
示例代码:
$discourse = RockChat::with([
"getAuthor",
"isLiked",
"lastReply",
"category" => function ($q) {
$q->addSelect("name", "id");
},
"subcategory" => function ($q) {
$q->addSelect("name", "id");
},
"replies" => function ($q) {
$q->withCount("likes");
$q->with(["isLiked", "replies" => function ($q) {
$q->withCount("likes");
$q->with(["isLiked"]);
}]);
}])
->withCount("replyNumber")
->withCount("likes")
->where("category_id", $request->get("category"))
->where("subcategory_id", $request->get("subcategory"))
->where("slug", $request->get("id"))
->first();
和globalScope
protected static function boot()
{
parent::boot();
static::addGlobalScope('user_active', function (Builder $builder) {
$builder->whereHas('getAuthor');
});
}
我完全无法弄清楚,如何检查父评论用户是否处于非活动状态,因此dount count child会回复状态或图片评论或其他任何内容的回复。
我尝试将全局范围应用于withCount关系方法。
谢谢!