Php 将产品多种颜色存储到数据库Laravel

Php 将产品多种颜色存储到数据库Laravel,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我有一个产品表,它有价格、名称、库存等,还有一个颜色产品表,它有颜色标识、产品标识。我想用选定的颜色将产品存储到数据库中,目前为止,我收到一个错误为foreach()提供的参数无效。我怎样才能解决这个问题 控制器 $formInput=$request->all(); //If I do dd($formInput) I see all data $product = product::create(array_merge($formInput, [ 'us

我有一个产品表,它有
价格、名称、库存等
,还有一个颜色产品表,它有
颜色标识、产品标识
。我想用选定的颜色将产品存储到数据库中,目前为止,我收到一个错误
为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>

--选择颜色--
@foreach($colors作为$color)
{{$color->name}
@endforeach

尝试将您的选择字段重命名为类似的内容

让我们一步一步来

$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和file2更改为其真实名称和值,这是行不通的。它在尝试获取非对象的属性时抛出一个错误
@distoon当显示此错误时,您能更具体一点吗?它是在函数的POST请求期间还是在加载视图时发生的?它是在POST期间发生的,不会在@distoon保存数据