Я хочу сохранить массив изображений продуктов и массивы color_id в них в одном и том же порядке, поэтому здесь у меня теперь есть 2 массива: images
и color_id
, и я знаю, что первый элемент в массиве images
равен первому элементу в color_id
массив теперь для этого я делаю, как показано ниже:
public function uploadImages($data, $product,$color_id = null,$size_id = null)
{
$previousImageIds = $product->images()->pluck('id');
$i = null;
if (isset($data['images'])) {
foreach ($data['images'] as $imageId => $image) {
$file = 'images.' . $imageId;
$dir = 'product/' . $product->id;
if (str_contains($imageId, 'image_')) {
if (request()->hasFile($file)) {
$i++;
$this->create([
'path' => request()->file($file)->store($dir),
'product_id' => $product->id,
'product_color_id' => $color_id[$i],
'product_size_id'=> $size_id ,
]);
}
}
}
}
Теперь, когда я передаю эти 2 массива этой функции, как показано ниже:
^ array:3 [▼
"image_1" => Illuminate\Http\UploadedFile {#756 ▶}
"image_2" => Illuminate\Http\UploadedFile {#790 ▶}
"image_3" => Illuminate\Http\UploadedFile {#753 ▶}
]
и цветовой массив, как показано ниже:
^ array:3 [▼
0 => "3"
1 => "1"
2 => "2"
]
Я получаю эту ошибку:
Неопределенное смещение: 3 // в этой строке 'product_color_id' => $ color_id [$ i],
Теперь это иногда работает, иногда нет, нет ли способа синхронизировать c индексы 2-х массивов и не давать им выбросить ошибку. спасибо