Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Abhilash19's avatar

How to use $request->all() in laravel 5.4 to update form data

I'm trying to update the user information. I wanna update entire data using $request->all() . I'm not getting error, But the submitted data is not saving in database. Please check my code. Please tell me what mistake I've done.

  $speakUpdate  = Speaker::where('id',$id)->first();
        if ($speakUpdate) {
           $speak = $speakUpdate->update($request->all());
        }

Below is the form data

<form action="{{url('attendeeChange',[$editSpeaker->id])}}" method="post" name="spea"enctype="multipart/form-data">
    First Name:<input type="text"  value="{{$editSpeaker->first_name}}" placeholder="first name"><br>
    <button value="submit">Save</button>
  </form>
0 likes
7 replies
RamjithAp's avatar

Try this way on your controller

    $speakUpdate  = Speaker::findOrFail($id);

    $input = $request->all();

    $speakUpdate->fill($input)->save();

Make sure all the field names you updating are in fillable array of your App/Speaker.php modal

protected $fillable = ['first_name',etc];

And your form

<form action="{{url('attendeeChange',[$editSpeaker->id])}}" method="post" name="spea"enctype="multipart/form-data">
    First Name:<input type="text" name="first_name" value="{{$editSpeaker->first_name}}" placeholder="first name"><br>
    <button value="submit">Save</button>
  </form>
2 likes
mushood's avatar

In your form, you have not assigned any "name" to your input.

First Name:<input type="text"  value="{{$editSpeaker->first_name}}" placeholder="first name"><br>

should be replaced by

First Name:<input type="text"  value="{{$editSpeaker->first_name}}" placeholder="first name" name="SAME_NAME_AS_COLUMN_IN_DB"><br>
JavedBaloch's avatar
Level 2

It seems name attribute is missing in your element

<input type="text" name="first_name" value="{{$editSpeaker->first_name}}" placeholder="first name">

And i can not see CSRF protected in your form, try to add this if you're submitting any form

 {{ csrf_field() }}

And try to add submit if you ever submiting something

<button type="submit">

And if you're not sending any file in form so you don't need to use enctype

1 like
jovanvta's avatar

Form:

<form method="POST" action="{{url('attendeeChange', [$editSpeaker->id])}}">
{{ csrf_field() }}
{{ method_field('PATCH') }}
    <label for="firstName">First Name:</label>
    <input type="text" name="first_name" id="firstName" 
        value="{{$editSpeaker->first_name}}" placeholder="first name">
    <br>
        <button type="submit">Save</button>
  </form>

Route:

Route::patch('/speaker/{speaker}', 'SpeakersController@update')
->name('attendeeChange');

SpeakersController:

public function update(Speaker $speaker, Request $request)
{
    $request->validate([
        'first_name' => 'required|string' // add your custom validation rules here
    ]);
    
    $speaker->update([
        'first_name' => $request->get('first_name')
    ]);

}
Snapey's avatar

you are using update incorrectly

if you have the model, set each value or use fill(), then save()

2 likes

Please or to participate in this conversation.