Laravel如何使用请求全部更新多个记录

5
如何使用request->all()更新所有记录,我有许多列要更新。下面是我的创建方法代码,我用它来插入多个新记录,这很好用。
public function store(Request $request)
{
    $teacher = new Teacher;
    $teacher::create($request->all());
    $teacher->save();
    return back()->with('message','Teacher Added Successfully!');
}

这是我尝试过但没有成功的内容:

public function update(Request $request, Teacher $teacher)
{
    $teachers=$request->all();
    $teacher->save();
    return back()->with('message','Record Successfully Updated!');
}
2个回答

13

不是这样:

public function update(Request $request, Teacher $teacher)
{
    $teachers = $request->all();
    $teacher->save();
    return back()->with('message', 'Record Successfully Updated!');
}

你必须试试这个:

public function update(Request $request, Teacher $teacher)
{
    $input = $request->all();
    $teacher->fill($input)->save();
    return back()->with('message', 'Record Successfully Updated!');
}

假设您需要在 Teacher 模型中创建 fillable 属性。

希望这对您有所帮助。谢谢。


Fill方法需要键/值数组。在这种情况下,更新会起作用吗? - Iftikhar uddin
1
是的,在这种情况下它有效,因为$request->all()也获取键/值数组。 - Inzamam Idrees
为什么$teacher对象可能为空?我在URL中正确传递了ID,并确信它存在于数据库中。 - Brian

3
public function update(Request $request, Teacher $teacher)
{
    /*
     * For the love of god, validate your data!!!
     */
    $attributes = $this->validate($request, $rules);
    $teacher->update($attributes);

    return ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接