[英]Laravel 5 - proper way to update record with many-to-many association?
我是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());
}
但是出現了“未知的列作者” SQL錯誤。
我嘗試了不同的方法:
public function update(Request $request, Publication $publication)
{
$publication->update($request->except('authors'));
$publication->authors()->sync($request->input('authors'));
return redirect('/');
}
這次它按預期工作。 我的問題是:我做對了嗎? 還是有更好/更簡單的方法? 無需顯式“切片”或請求就可以進行此更新嗎? ( $request->except('authors')
)
更安全,更好的選擇是使用
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驗證
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.