Home > OS >  Laravel create command wont insert a value in database
Laravel create command wont insert a value in database

Time:01-17

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

CodePudding user response:

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

CodePudding user response:

When you are trying to use default create method the fields names must be same as in database.

$client->phone_number = request('phone'); 

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.

  • Related