我有两个模型:客户端模型有许多存款_数量(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`