我需要根据编辑后的数据更新数据库表。
控制器
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'
];
关于如何解决它或我做错了什么的想法?
答案 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();