Условный запрос Laravel по сумме отношений

Я пытаюсь создать запрос для получения всех Orders, у которых есть реляционный products, где количество products больше или равно значению.

order может иметь много products, а продукты имеют свойство amount. Теперь мне нужно получить Orders, где общая сумма products (сумма суммы собственности по всем связанным products) соответствует критериям.

$orders = Order::
when( $request->amount, function($query) use ($request){
    $query->whereHas('products', function($q) use ($request){
        $q->where('amount', '>=', $request->amount);
    });
})
->get();

Этот код работает до тех пор, пока проверяет, что сумма для каждого подключенного продукта больше или равна вводу, но я не могу обернуться, чтобы заставить его проверить sumamount на всех подключенных products. Какие-нибудь советы?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
985
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использовать это:

$orders = Order::
when( $request->amount, function($query) use ($request){
    $query->whereHas('products', function($q) use ($request){
        $q->select(DB::raw('sum(amount) amount'))
            ->having('amount', '>=', $request->amount);
    });
})
->get();

Другие вопросы по теме