通过whereHas查询关系存在时,如何统计相关模型



我有两个模型:客户端模型有许多存款_数量(ClientDeposit(

class Client extends Model
{
public function deposits_quantity()
{
return $this->hasMany(ClientDeposit::class, 'client_id');
}
}

如何在不进行制动查询"链接"的情况下获得特定数量的相关(deposits_quantity(模型结果?假设我有这样的查询链:

$query = Client::query()

例如,我有一个过滤器,通过创建日期过滤关系:

$query->whereHas('deposits_quantity', function($query) use($request)  {
$query->whereDate('created_at', '>=', $request->input('deposit_at_from'))
->whereDate('created_at', '<=', $request->input('deposit_at_to')); })

接下来,当我试图像这样过滤关系数量以只获得具有2个存款的Clients_quantity:时

$query->has('deposits_quantity' ,'=', 2')

它返回Clients with 2 Deposits,但它停止了查询链,并从一开始就返回结果,之前没有所有的过滤器,它返回clean"has"并忽略其他过滤器,我知道这一点,因为我称之为"have",但如何正确地通过特定数量的关系和过滤后获得结果?

您可以使用whereHas的第二个和第三个参数来指定运算符和计数,以进一步自定义查询:

$query->whereHas('deposits_quantity', function($query) use ($request) {
$query->whereDate('created_at', '>=', $request->input('deposit_at_from'))
->whereDate('created_at', '<=', $request->input('deposit_at_to'));
}, '=', 2) // <= Attention to these 2 arguments passed to `whereHas`

相关内容

  • 没有找到相关文章

最新更新