我的 Laravel 应用程序中有business
和profile
模型。业务hasOne
简介。我使用表单生成器创建了一个补丁方法表单来更新我的业务和配置文件表。
刀
{!! Form::model($business, ['route' => ['business.edit.post', $business], 'method' => 'PATCH']) !!}
@include('forms.business.edit')
{!! Form::close() !!}
业务控制器
public function update(Request $request, $id)
{
$business = Business::findOrFail($id);
$business->update($request->all());
$business->profile()->update($request->all());
return back()->withMessage('updated');
}
现在使用补丁方法将包括一个名为 _method 的隐藏字段以及用于 csrf 保护的内置 _token 字段。更新模型时出现错误,profile
说明:
SQLSTATE[42S22]: Column not found: 1054 Unknown column '_method' in 'field list' (SQL: update `business_profiles` set `_method` = PATCH, `_token` = Zyxtxa88uUQKhaRQNY8k7qPu2N0i6o20dY4sUABk, `city` = Belfast where `business_profiles`.`business_id` = 107 and `business_profiles`.`business_id` is not null)
在我看来,它试图更新那些不应该的隐藏字段。注释掉 _profile->update
行时,保存工作正常。看起来更新相关模型不符合 Laravel 内置的批量分配规则。有人可以建议如何解决这个问题吗?