У меня есть ввод 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 — это двумерный массив. Я получаю данные, необходимые в этом коде, но теперь мне нужно обновить количество, добавив сохраненное количество с этим в массив.
Если я правильно понимаю, вы хотите выполнить запрос, где location_id = $location
и variant_id = $variant
правильно? Если это так, вместо использования нескольких предложений where вы можете передать вложенный массив в одно предложение where.
то есть
$query->where([
['location_id', $location],
['variant_id', $variant]
]);
Я почти уверен, что вы не можете сделать это с Eloquent, но уже есть вопрос о Обновление нескольких строк с разными значениями в MySQL.