我是Laravel的新手,试图找出通过关联保存数据的正确方法。我使用的是版本5.3
例如:我有出版物属于很多作者
请求的DD:
array:4 [▼
"_token" => "something"
"_method" => "PATCH"
"name" => "Something"
"authors" => array:2 [▼
0 => "780"
1 => "840"
]
]
首先,我试图这样做:
public function update(Request $request, Publication $publication)
{
$publication->update($request->all());
}
但得到了#34;未知栏目的作者和#34; SQL错误。
我尝试过不同的方法:
public function update(Request $request, Publication $publication)
{
$publication->update($request->except('authors'));
$publication->authors()->sync($request->input('authors'));
return redirect('/');
}
这次它按预期工作。我的问题是:我做得对吗?或者有更好/更简单的方法?可能有可能在没有明确的"切片"的情况下进行此更新。或要求? ($request->except('authors')
)
答案 0 :(得分:1)
更安全,更好的选择是使用
public function update(Request $request, Publication $publication)
{
$publication->fill($request->all())->save();
$publication->authors()->sync($request->input('authors'));
return redirect('/');
}
并在您的出版物类
中设置$fillable
属性
class Publication extends Model
{
protected $fillable = ['name', 'other_field'];
}
此外,如果您验证输入会很好。进一步阅读:Laravel Validation