Обновите данные из запроса, используя несколько строк в laravel

У меня есть ввод 2d-массива следующим образом:

[ 6 => [ [2=>3, 5=>7] ],
  8 => [ [1=>4, 9=>3] ],
  .....
]

6,8 — это идентификаторы местоположения, 2,5,1,9 — идентификаторы вариантов, а 3,4,7,3 — их соответствующие количества. Мне нужно перебрать массив 2d и получить данные. В таблице есть поля location_id, variant_id и количество.

    $variantsData  = self::where(function ($query) use ($inventoryData) {
        foreach ($inventoryData as $location => $variantData) {
            foreach ($variantData as $variant => $quantity) {
                $query->orWhere(function ($query) use ($location, $variant) {
                    $query->where('location_id', $location)
                        ->where('variant_id', $variant);
                });
            }
        }
    })->get();

$inventoryData — это двумерный массив. Я получаю данные, необходимые в этом коде, но теперь мне нужно обновить количество, добавив сохраненное количество с этим в массив.

Я почти уверен, что вы не можете сделать это с Eloquent, но уже есть вопрос о Обновление нескольких строк с разными значениями в MySQL.

Namoshek 10.04.2019 07:11
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
2 085
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Если я правильно понимаю, вы хотите выполнить запрос, где location_id = $location и variant_id = $variant правильно? Если это так, вместо использования нескольких предложений where вы можете передать вложенный массив в одно предложение where.

то есть

$query->where([
    ['location_id', $location],
    ['variant_id', $variant]
]);

Ссылка: https://laravel.com/docs/5.8/queries#where-clauses

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