Laravel как обновить несколько записей с помощью request all

#laravel

#laravel

Вопрос:

Как обновить все записи с помощью request->all() , у меня есть много столбцов для обновления. вот мой код для метода create, который я использую для вставки нескольких новых записей, который работает нормально.

 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!');
}
  

Ответ №1:

Вместо этого:

 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!');
}

  

Предполагая, что вам нужно создать fillable свойство в вашей Teacher модели.

Я надеюсь, что это было бы полезно. Спасибо

Комментарии:

1. Методу Fill необходим массив ключей / значений. Будет ли обновление работать в этом случае?

2. Да, это работает в данном случае, потому что $request->all() получаем также массив ключ / значение.

3. Почему объект $teacher может быть пустым? Я правильно передаю идентификатор в URL-адресе, и я уверен, что он существует в базе данных

Ответ №2:

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

    return ...
}