Сортировка родительского отношения по дочернему в laravel красноречиво - PullRequest
0 голосов
/ 07 мая 2020

У меня проблема с поиском правильного запроса для моей ситуации.
У меня есть модель User, модель продукта, модель UserProduct с product_id, user_id и ценой, а также модель UserPromotion с user_product_id и скидкой.
Итак, я хочу, чтобы все они были вложенными, и я хочу иметь самую высокую скидку (если она есть) для каждого пользователя.
Итак, мой запрос выглядит следующим образом:
$promotions = User::whereHas('products')->with(['userProduct.product','userProduct.promotion'])->take(10)->get();
Я не Не знаю, как получить максимальную скидку для каждого пользователя.

1 Ответ

1 голос
/ 07 мая 2020

я думаю, вам следует добраться до таблицы user_promotions с помощью leftJoin, а затем выбрать максимальную скидку:

$promotions = User::whereHas('products')
->with(['userProduct.product','userProduct.promotion'])
->leftJoin('user_products','user_products.user_id','users.id')
>leftjoin('user_promotions','user_promotions.user_product_id','user_products.id')
->select('users.*',DB::raw('MAX(discount)'))->take(10)->get();

будьте осторожны с именами таблиц, они должны точно соответствовать вашим таблицам в вашей базе данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...