簡體   English   中英

Laravel 5-用多對多關聯更新記錄的正確方法嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM