Amr*_*man 3 laravel eloquent laravel-5
我有以下型号:
问题:[标题,user_id]
回复:[正文、问题 ID、用户 ID]
用户名]
可以看到,一个问题有很多条回复,一条回复属于一个用户。
我已向问题模型添加了贡献者关系,该模型检索已添加回复的所有用户(使用回复作为联接表):
public function contributors()
{
return $this->belongsToMany(User::class, 'replies')->distinct('user_id');
}
Run Code Online (Sandbox Code Playgroud)
我必须使用distinct()删除重复项,因为用户可能会针对一个问题发布许多回复,而这效果很好。
现在,当我这样做时,问题就发生了:
Question::withCount('contributors')->get()
Run Code Online (Sandbox Code Playgroud)
它会忽略对的调用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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1459 次 |
| 最近记录: |