我正在制作一种类似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');
}
还没有反比关系。我不知道我将如何创建它但是现在它不起作用。
答案 0 :(得分:2)
从两个关系定义中删除->count();
并使用withCount()
:
UserView::withCount(['threadKarmaPoints', 'commentKarmaPoints'])
->where('username', $username)
->firstOrFail();
如果您还需要实际加载相关数据,请将->with(['threadKarmaPoints', 'commentKarmaPoints'])
添加到查询中。