我正在尝试使用作用域对关系的筛选部分进行计数
Parent::
withWhereHas('children')
->withCount(['children', function (Builder $builder) {
$builder->where('status', 1);
}])
->get()
父节点有36个子节点,其中6个状态为1,添加的变量正确,i检索childens_count = 6。
但是我只检索了关系数组中的6个孩子,而我没有限定withWhereHas的作用域,所以我想我遗漏了一些东西。withCount对整个请求有任何副作用吗?在文档中没有看到这一点。
以下是模型中的关系:
// Programme Model
public function childrens(): HasMany
{
return $this->hasMany(Children::class);
}
// Children Model
public function parent(): BelongsTo
{
return $this->belongsTo(Parent::class);
}
任何建议都很感谢!
2条答案
按热度按时间mspsb9vt1#
从我对您的问题的理解来看,这就是您需要用来检索所有36个孩子的查询
如果你想给孩子们的关系设定一个条件
如果你想返回两个孩子和一个父节点的计数器
如果你只想计算所有的孩子,我建议你使用孩子。
为了获取所有的孩子,并且在同一个查询中显示有多少孩子处于活动状态(1),您可以将您雄辩的查询调整为:
这里唯一的区别是在开始使用query(),当然还有额外的where(),并且只返回第一个Parent。
希望这能帮到你。
pgvzfuti2#
将此关系添加到父类
那么