gpt4 book ai didi

laravel - 在具有 distinct() 的关系上使用 withCount()

转载 作者:行者123 更新时间:2023-12-04 01:44:09 32 4
gpt4 key购买 nike

我有以下模型:

问题:[title, user_id]

回复:[body, question_id, user_id]

用户:[姓名]

如你所见,一个问题有很多回复,一个回复属于一个用户。

我已将贡献者 关系添加到问题 模型,该模型检索所有已添加回复的用户(使用回复作为连接表):

public function contributors() 
{
return $this->belongsToMany(User::class, 'replies')->distinct('user_id');
}

我必须使用 distinct() 来删除重复项,因为用户可能会针对一个问题发布许多回复,而这工作正常。

当我这样做时,问题就出现了:

Question::withCount('contributors')->get()

它忽略了对 distinct() 的调用,并为我提供了已添加回复(包括重复回复)的用户总数。

知道如何解决这个问题吗?

最佳答案

从关系中删除 distinct() 并使用带有原始表达式的 withCount():

public function contributors() 
{
return $this->belongsToMany(User::class, 'replies');
}

Question::withCount(['contributors' => function ($query) {
$query->select(DB::raw('count(distinct(user_id))'));
}])->get();

关于laravel - 在具有 distinct() 的关系上使用 withCount(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55994722/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com