Reputation: 95
I was trying to put something in my database but I got the error: SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value. This program is made in laravel 6.9.0.
This is my controller:
public function store ()
{
request()->validate([
'player' => ['required'],
'team_id' => ['required'],
'country' => ['required'],
'birth_day' => ['required'],
'age' => ['required'],
'length' => ['required'],
'weight' => ['required'],
'position' => ['required'],
'player_img' => ['required'],
]);
$slug = $this->slugify(request('player'));
$user = \Auth::user();
Players::create([
'user_id' => $user->id,
'player' => request('player'),
'team_id' => request('team_id'),
'country_player' => request('country'),
'birth_day' => request('birth_day'),
'age' => request('age'),
'length' => request('length'),
'weight' => request('weight'),
'position' => request('position'),
'player_img' => request('player_img'),
'slug_player' => $slug
]);
return redirect('/admin/add-player');
}
This is my form:
<form method="POST" action="/admin/add-player/database">
@csrf
<input type="text" name="player" required>
<br>
<select class="form-control input-fields" name="team_id">
<option value="">Kies een team</option>
@foreach($teams as $team)
<option value="{{ $team->id }}">{{ $team->team_name }}</option>
@endforeach
</select>
<br>
<input type="text" name="country" required>
<br>
<input type="text" name="birth_day"required>
<br>
<input type="text" name="age" required>
<br>
<input type="text" name="length" required>
<br>
<input type="text" name="weight" required>
<br>
<input type="text" name="position" required>
<br>
<input type="text" name="player_img" required>
<br>
<input type="submit" name="submit" class="form-control input-fields btn-primary">
</form>
This is my model:
class Players extends Model
{
protected $guarded = [];
protected $fillable = [
'user_id'
];
}
Can somebody help me with this problem?
Upvotes: 1
Views: 626
Reputation: 6005
Change your model like
class Players extends Model
{
protected $guarded = [];
protected $table = 'players';
protected $fillable = [
'user_id','player','team_id','country_player','birth_day','age','length','weight','position','player_img','slug_player'
];
}
Upvotes: 1
Reputation: 4813
You must add 'user_id'
to protected $fillable
property inside Players model
Upvotes: 2