首页 > 解决方案 > 将产品多种颜色存储到数据库 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>

标签: phplaravellaravel-5eloquent

解决方案


尝试将您的选择字段重命名为<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的真实名称和值


推荐阅读