Обновите данные из запроса, используя множественные где в laravel - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть 2d вход массива, подобный этому:

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

6,8 - это идентификаторы местоположения, 2,5,1,9 - это варианты и 3,4,7,3 - их соответствующие количества.Я должен пройти через 2d массив и получить данные.В таблице есть поля location_id, option_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 - это двумерный массив.Я получаю данные, требуемые в этом коде, но теперь мне нужно обновить количество, добавив сохраненное количество с этим в массиве.

1 Ответ

0 голосов
/ 10 апреля 2019

Если я правильно понимаю, вы хотите выполнить запрос, где 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

...