更新数据库记录 table : Laravel

Update records of database table : Laravel

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

控制器

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 名字是 Table: subscription_plans 型号是 SubscriptionPlan

这些是 table 列:

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

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

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

此外,而不是

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

使用

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

然后用$subscriptionplan->save();

保存订阅计划

如果您的解决方案不起作用,请像这样尝试 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();        
}