更新数据库表记录:Laravel

时间:2018-10-18 08:03:56

标签: database laravel edit

我需要根据编辑后的数据更新数据库表。

控制器

public function update(Request $request)
{
    $subscriptionplan = SubscriptionPlan::find($request->id);
    $subscriptionplan->update($request->all());        
    return back();        
}

但是当我提交表格时什么也没发生。当我在函数开头使用dd($request->all());时,它将正确显示编辑的数据,如下所示。

array:10 [▼
  "_method" => "patch"
  "_token" => "gOCL4dK6TfIgs75wV87RdHpFZkD7rBpaJBxJbLHF"
  "editname" => "SUP_EVA_001"
  "editdesc" => "des"
  "editprice" => "1000.050"
  "editlimit" => "1"
  "editperunit" => "20.000"
  "editexceedunit" => "30.000"
  "productid" => "1"
  "id" => "1"
]

但是数据库尚未更新。

我的表名是Table: subscription_plans,模型名是SubscriptionPlan

这些是表格列:

protected $fillable = [
        'name',
        'description',
        'price',
        'usage_limit',
        'charge_per_unit',
        'charge_per_unit_exceed',
        'is_limit_exceed_considered',
        'product_id'
    ];

关于如何解决它或我做错了什么的想法?

2 个答案:

答案 0 :(得分:1)

如果您的解决方案无效,请尝试这样的1by1。

public function update(Request $request)
{
    $subscriptionplan = SubscriptionPlan::find($request->id);
    $subscriptionplan->_method = $request->_method;
    $subscriptionplan->_token = $request->_token;
    $subscriptionplan->editname = $request->editname;
    $subscriptionplan->editdesc = $request->editdesc;
    $subscriptionplan->editprice = $request->editprice;
    $subscriptionplan->editlimit = $request->editlimit;
    $subscriptionplan->editperunit = $request->editperunit;
    $subscriptionplan->editexceedunit = $request->editexceedunit;
    $subscriptionplan->productid = $request->productid;
    $subscriptionplan->save();        
    return back();        
}

答案 1 :(得分:0)

为了使Laravel自动填充模型属性,传递给fill方法的数组的索引必须与您的模型属性名称相对应。

也可以代替

$subscriptionplan->update($request->all());

使用

$subscriptionplan->fill($request->all());

然后使用$subscriptionplan->save();

保存订阅计划