В моем приложении Laravel 5.6 установлены следующие отношения.
Purchase belongs to many Invoice
Invoice belongs to many Purchase
Invoice belongs to many Payment
Payment belongs to many Invoice
Эти отношения создаются с использованием сводных таблиц.
Я хочу найти только покупок, которые через счета-фактуры имеют платежи, равные 0.
В моем тесте у меня есть одна покупка, к этой покупке я прикрепил два счета, и к каждому из этих счетов я прикрепил один платеж.Один платеж имеет сумму 100, а другой - 0.
Для того, чтобы мой тест прошел, запрос не должен давать результатов, однако он этого не делает, он последовательно возвращает мою покупкусоздал.
Это запрос, который я написал:
Purchase::whereHas('invoices.payments', function ($q) {
return $q->where('amount', '<=', 0);
})->get();
Я также попытался:
Purchase::whereDoesntHave('invoices.payments', function ($q) {
return $q->where('amount', '>', 0);
})->get();
Я что-то здесь не так делаю?Я неправильно понимаю возможности WhereHas?
Любая помощь будет принята с благодарностью, спасибо.