Laravel withCount,如果父评论用户处于非活动状态,则不计入评论

时间:2017-02-02 10:21:39

标签: php mysql laravel orm lumen

我遇到了一个奇怪的问题,我无法找到答案如何解决。

例如,我在社交网站上有评论系统,对状态或图片或其他内容的父评论有无限级别的回复。

所以我用 $ 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关系方法。

谢谢!

0 个答案:

没有答案