Hello i am new to Laravel so currently im doing a CRUD. I have created this insert function that works well except one value is never inserted. This is the code below:
public function storeClient(Request $request) {
$request->validate([
'name' => 'required',
'email' => 'required|email',
'phone' => 'nullable',
'age'=>'required',
]);
Client::create($request->all());
dd($request->phone);
return redirect('/')->with('msg', 'Client Saved successfully!.');
}
the phone' => 'nullable'
, value will not insert in the database unless i update the existing values. I tried this command dd($request->phone);
and it shows the correct value from the user input. Any idea why the value will be inserted as null on database?
This is the value output when i make the dd
command
I tried this other code which works well but im trying to use the default create()
function of laravel. This is the other code i did that works well:
public function storeClient()
{
$client = new Client();
$client->name = request('name');
$client->email = request('email');
$client->phone_number = request('phone');
$client->age = request('age');
$client->save();
return redirect('/')->with('msg','Client Saved successfully!');
}
2
Answers
first i did not like nullable here ‘phone’ => ‘nullable’,
then u should see what do you register in your Client table phone_number or phone,
$client->phone_number = request(‘phone’);
i think you should rename your input name phone to phone_number and will work
When you are trying to use default create method the fields names must be same as in database.
this line works due to the name you entered manually.
to work with default create method change the name of field in database as phone.