user15784433
user15784433

Reputation:

Why my data is not storing in database in laravel?

my 3 inputs address, number and name_of_firm is showing null value but i fill the value in form. This is my form

<form id="myForm" method="post" action="{{ route('dealer.store') }}">
                        @csrf
                        <div class="user-box">
                            <input type="text" name="name" required="">
                            <label>Name</label>
                            @error('name')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="user-box">
                            <input type="text" name="name_of_firm" required="">
                            <label>Name Of Firm</label>
                            @error('name_of_firm')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="user-box">
                            <input type="text" name="number" required="">
                            <label>Number</label>
                            @error('number')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="user-box">
                            <input type="text" name="address" required="">
                            <label>Address</label>
                            @error('address')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="user-box">
                            <input type="email" name="email" required="">
                            <label>Email</label>
                            @error('email')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="user-box">
                            <input type="password" name="password" required="">
                            <label>Password</label>
                            @error('password')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>

                        <button class="a" id="a" value="submit" name="submit">Submit</button>

                    </form>

This is my controller. the name of my controller is DealerController from where i storing data in users table

public function store(Request $request)
{
    $request->validate([
        'name' => 'required',
        'email' => 'required',
        'password' => 'required',
        'name_of_firm' => 'required',
        'address' => 'required',
        'number' => 'required',
    ]);

    $user = User::create([
        'name' => $request->input('name'),
        'email' => $request->input('email'),
        'password' => Hash::make($request->input('password')),
        'name_of_firm' => $request->input('name_of_firm'),
        'address' => $request->input('address'),
        'number' => $request->input('number'),
    ]);

    return redirect()->route('dealer.index')->withSuccess('done');
}

this is my User model. there are only 3 field that are fillable.

protected $fillable = [
    'name',
    'email',
    'password',
];

This is pic of database. enter image description here

Upvotes: 0

Views: 1145

Answers (3)

reza khademi
reza khademi

Reputation: 464

That's because of Laravel mass-assignment and you should add every field you want to fill with input in $fillable array.

change your fillable array like below:

protected $fillable = [
        'name',
        'email',
        'password',
        'name_of_firm',
        'address',
        'number'
];

Upvotes: 2

Hedayatullah Sarwary
Hedayatullah Sarwary

Reputation: 2844

If you are using $fillable try to add the other fields also, but if you don't want to add other fields try to use $guarded:

$fillable

protected $fillabel = [
    'name',
    'email',
    'password',
    'name_of_firm',
    'address',
    'number'
];

$guarded

protected $guarded = [];

Upvotes: 0

Khalid Khan
Khalid Khan

Reputation: 3185

Replace your $fillable to this

protected $guarded = [
    'id',
];

It'll resolve the issue

Upvotes: 1

Related Questions