#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 ...
}