Как получить модели сравнив суммы полей отношений?

Чтобы получить модели, сравнивая суммы полей отношений в Laravel, вам понадобится использовать метод has() и метод withCount().

Перед тем, как начать, нужно убедиться, что ваши модели имеют нужные отношения. Для примера, предположим, у нас есть модель Order, которая имеет отношение hasMany с моделью Product. В поле Order у нас также есть поле total_amount, хранящее общую сумму заказа.

Теперь, чтобы получить модели Order, сравнивая суммы полей отношений, мы можем использовать следующий код:

$orders = Order::has('products')
               ->withCount('products')
               ->whereColumn('total_amount', '=', 'products_total_amount')
               ->get();

В данном примере мы использовали метод has('products'), чтобы выбрать только те заказы, у которых есть связанные модели Product. Затем мы использовали метод withCount('products'), чтобы добавить в результат поле products_count, содержащее количество связанных моделей Product.

Далее мы используем метод whereColumn('total_amount', '=', 'products_total_amount'), чтобы сравнить суммы полей total_amount и products_total_amount. Сравнение двух полей позволяет нам выбрать только те заказы, где общая сумма заказа равна сумме полей products_total_amount.

Наконец, мы вызываем метод get() для получения коллекции моделей Order, соответствующих заданным условиям.

Таким образом, вы получите коллекцию моделей Order, у которых сумма полей отношений Product равна общей сумме заказа.