Laravel雄辩的关系有很多通过不起作用

时间:2018-02-02 14:09:03

标签: laravel eloquent

我正在制作一种类似reddit的网站。

我有用户,threadKarmas,commentKarmas表/模型。

我想通过他创建的主题和评论来检索用户及其karmas的数量。

$user = UserView::with([
            'threadKarmaPoints',
            'commentKarmaPoints'
            ])
            ->where('username', $username)
            ->firstOrFail();

用户关系:

public function threadKarmaPoints() {
    return $this->hasManyThrough(
        'App\Models\ThreadKarmaView',
        'App\Models\ThreadView',
        'userId',
        'threadId',
        'userId',
        'threadId'
        )->count();
}

    public function commentKarmaPoints() {
    return $this->hasManyThrough(
        'App\Models\CommentKarmaView',
        'App\Models\CommentView',
        'userId',
        'commentId',
        'userId',
        'commentId'
        )->count();
}

public function user() {
    return $this->belongsTo('App\Models\Views\UserView', 'userId');
}

还没有反比关系。我不知道我将如何创建它但是现在它不起作用。

1 个答案:

答案 0 :(得分:2)

从两个关系定义中删除->count();并使用withCount()

UserView::withCount(['threadKarmaPoints', 'commentKarmaPoints'])
    ->where('username', $username)
    ->firstOrFail();

如果您还需要实际加载相关数据,请将->with(['threadKarmaPoints', 'commentKarmaPoints'])添加到查询中。