【问题标题】:Store product multiple colors to the database Laravel将产品多种颜色存储到数据库 Laravel
【发布时间】:2020-06-27 22:41:53
【问题描述】:

我有一个包含 price, name, stock etc. 的产品表和包含 color_id, product_id 的 color_products 表。到目前为止,我想用选定的颜色将产品存储到数据库中,但出现错误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>

【问题讨论】:

    标签: php laravel laravel-5 eloquent


    【解决方案1】:

    尝试将您的选择字段重命名为 &lt;select multiple name="color_id[]" id="color"&gt;

    让我们一步一步来。

    $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的真实名称和值

    【讨论】:

    • 那行不通。它抛出一个错误Trying to get property of non-object@distoon
    • 当这个错误出现时你能说得更具体些吗?它是在对函数的 POST 请求期间还是在加载视图时发生的?
    • 它发生在 POST 期间,它不会保存数据@distoon
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多