test_product_variant: содержит варианты продукта с Product_id.
Столбцы: id, Product_id, ...
test_product_material_variant : Содержит варианты материала, связанные с вариантами продукта.
Столбцы: Product_variant_id, Material_id, Material_variant_id
Проблема:
Мне нужно обновить Material_variant_id в test_product_material_variant для того же Material_id но назначьте разные Material_variant_ids из массива материалов. Код, который я использую в настоящее время, просто обновляет один и тот же Material_variant_id для всех вариантов продукта вместо присвоения отдельных идентификаторов из массива материалов.
Код: Выделить всё
$product_id = 1;
$productVariants = DB::table('test_product_variant')
->where('product_id', $product_id)
->get();
$materials = [
[
"material_id" => "20",
"material_variant_id" => "4",
],
[
"material_id" => "20",
"material_variant_id" => "8",
],
];
$materialIndex = 0;
foreach ($productVariants as $productVariant) {
$product_variant_id = $productVariant->id;
$material = $materials[$materialIndex % count($materials)];
$material_id = $material['material_id'];
$material_variant_id = $material['material_variant_id'];
DB::table('test_product_material_variant')
->where('product_variant_id', $product_variant_id)
->where('material_id', $material_id)
->update(['material_variant_id' => $material_variant_id]);
$materialIndex++; // increment the material index
}
таблица test_product_variant имеет столбцы
id
product_id
test_product_material
product_id
material_id
material_variant_id
test_product_material_variant
product_variant_id
material_id
material_variant_id
Подробнее здесь: https://stackoverflow.com/questions/790 ... ct-mapping