首页 > 解决方案 > 拉拉维尔。如何在一列的每一行中保存一个新值?

问题描述

我有一张桌子,请看migration下面:

Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->integer('group');
        $table->string('code');
        $table->string('name');
        $table->double('price');
        $table->timestamps();
    });

我想将column = price每行的 增加一个我从input form. 我能够看到我能够检索然后增加的价格,但我正在努力弄清楚如何在每个价值增加时保存它。

我尝试了什么:

public function increase(Request $request){

    $products = DB::table('products')->select('price')->get();
    $percentage = $request['increase'];

    foreach ($products as $product) {
       $price = $product->price * ((100 + $percentage)/100);
       $product->price = $price;
       $product->save();
    }

}

但我得到一个错误,Call to undefined method stdClass::save()

标签: laravelquery-builder

解决方案


你可以在一个声明中做到这一点:

 $percentage = $request['increase'];

   DB::table('products')->update(['price'=> DB::raw("price * ((100 + {$percentage})/100)")]);

推荐阅读