php - 将产品多种颜色存储到数据库 Laravel
问题描述
我有一个产品表price, name, stock etc.
和 color_products 表color_id, product_id
。到目前为止,我想将具有选定颜色的产品存储到数据库中,但出现错误Invalid argument supplied for foreach()
。我怎样才能解决这个问题?
控制器
$formInput=$request->all(); //If I do dd($formInput) I see all data
$product = product::create(array_merge($formInput, [
'user_id' => Auth::user()->id
]));
// Insert color to the database
$store_color = [];
$colors = $request->color_id;
foreach ($colors as $color) {
$ouzColor = $color->save;
$store_color[] = [
'product_id' => $product->id,
'color_id' => $ouzColor
];
}
ColorProduct::insert($store_color);
刀片文件
<select multiple name="color_id" id="color">
<option value=""> --Select Colors -- </option>
@foreach($colors as $color)
<option value="{{ $color->id }}" >{{$color->name}}</option>
@endforeach
</select>
解决方案
尝试将您的选择字段重命名为<select multiple name="color_id[]" id="color">
让我们一步一步来。
$product = Product::create([
'field 1' => $request->field1,
'filed 2' => $request->field2,
'user_id' => \Auth::user()->id,
]);
$store_color = [];
foreach ($request->color_id as $index=>$color) {
$store_color[$index] = [
'product_id' => $product->id,
'color_id' => $color,
];
}
ColorProduct::insert($store_color);
当然,您需要更改filed1和2的真实名称和值
推荐阅读
- iis - 二维码 URL 有非法的 '%03',我可以 HTTP 重定向吗?
- c++ - 让 LLVM 6.0.0 lld-link 与 Code::Blocks 一起工作
- .net - 如何在不参考谷物实现的情况下调用奥尔良谷物方法?
- android - 带有显示更多选项的网格视图
- c# - 在 C# 中定位多个 office/outlook 版本
- validation - 使用 ConstraintValidator 验证对象
- javascript - 当 Div 在视口中时,希望 JavaScript 脚本运行
- java - Android 分享到 Facebook 不起作用
- c# - 从包含多种类型的 JSON 对象中提取数组
- mysql - 在具有 1000 万行的数据库上选择 mysql 时出现错误 504