Когда вы делаете lazy
нетерпеливую загрузку, laravel не знает, есть ли записи или нет.Если нет, laravel возвращает пустую коллекцию.
Если вы хотите отфильтровать в самом начале, чтобы показывать только платежи, имеющие поставщиков, клиентов и т. Д., Вы можете сделать следующее:
$payments : Payment::whereHas('vendors')->whereHas('clients')->get();
Приведенное выше даст вам только платежи, которые содержат по крайней мереодин поставщик и 1 клиент.
Кроме того, вы используете load()
, что требует отложенной загрузки.Он спроектирован таким образом, что вы можете получить первичную коллекцию первыми, а затем, когда и когда вам это нужно, получить только коллекцию отношений.
Проверьте наличие with()
, если вы не хотите выполнять отложенную загрузку.
Кроме того, если вы хотите избежать энергичной загрузки, вы можете перейти к join
, но, опять же, вы не будете использовать определенные отношения.