2016-08-26 35 views
0

我是Laravel的新手,試圖找出正確保存關聯數據的方法。我使用的是5.3版Laravel 5 - 通過多對多關聯更新記錄的正確方法?

例如:我有出版物是belongsToMany 作者

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')

回答

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

+0

SQL錯誤(1054字段列表中的未知列'作者') – user1327

+0

您是如何設置'$ fillable'屬性的? – Skysplit

+0

我用過守衛。 'protected $ guarded = array();' – user1327

相關問題