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>
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>
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>
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
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')
]);
}
you are using update incorrectly
if you have the model, set each value or use fill(), then save()
Please sign in or create an account to participate in this conversation.