Чтобы получить модели, сравнивая суммы полей отношений в 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
равна общей сумме заказа.