Reputation: 1323
In my Laravel-5.8 I have this code:
Model
protected $fillable = [
'id',
'first_name',
'employee_type_id',
'last_name',
];
public function employeetype()
{
return $this->belongsTo('App\Models\Hr\HrEmployeeType','employee_type_id','id');
}
Controller
public function update(UpdateEmployeeRequest $request, $id)
{
if (! Gate::allows('employee_edit')) {
return abort(401);
}
DB::beginTransaction();
try {
$employee = HrEmployee::find($id);
$employee->employee_type_id = $request->employee_type_id;
$employee->first_name = $request->first_name;
$employee->last_name = $request->last_name;
}
$employee->save();
DB::commit();
Session::flash('success', 'Employee is updated successfully');
return redirect()->route('hr.employees.index');
} catch (Exception $exception) {
Log::error($exception);
DB::rollback();
Session::flash('error', 'Action failed! Please try again');
return back();
}
}
View
<form action="{{route('hr.employees.update', ['id'=>$employee->id])}}" method="post" class="tab-wizard wizard-circle form" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="col-12 col-sm-4">
<div class="form-group">
<label class="control-label"> Other Name:</label>
<input type="text" name="other_name" placeholder="Enter other name here" class="form-control" value="{{old('other_name',$employee->other_name)}}" style="width: 100%;">
</div>
<!-- /.form-group -->
</div>
<!-- /.col -->
<div class="col-12 col-sm-4">
<div class="form-group">
<label class="control-label"> Last Name:<span style="color:red;">*</span></label>
<input type="text" name="last_name" placeholder="Enter last name here" class="form-control" value="{{old('last_name',$employee->last_name)}}" style="width: 100%;">
</div>
<!-- /.form-group -->
</div>
<div class="col-12 col-sm-4">
<div class="form-group">
<label class="control-label"> Employee Type:</label>
<select class="form-control select2bs4" data-placeholder="Choose Employee Type" tabindex="1" name="employee_type_id" style="width: 100%;">
<option value="">Select Employee Type</option>
<option selected >Select Employee Type</option>
@if($employeetypes->count() > 0 )
@foreach($employeetypes as $employeetype)
<option value="{{$employeetype->id}}" @if($employeetype->id == $employee->employee_type_id) selected @endif>{{$employeetype->employee_type_name}}</option>
@endforeach
@endif
</select>
</div>
<!-- /.form-group -->
</div>
<button type="submit" id="button" class="btn btn-primary" hidden>{{ trans('global.update') }}</button>
When I submitted the edit/update form, I got this error:
"SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'Select Employee Type' for column 'employee_type_id' at row 1 (SQL: update
hr_employees
setfirst_name
= Jacob,last_name
= Brown whereid
= 1) ◀"
How do I resolve it.
Thanks
Upvotes: 0
Views: 985
Reputation: 34678
Make your select field as required and give a null value for the default message :
<select class="form-control select2bs4" data-placeholder="Choose Employee Type" tabindex="1" name="employee_type_id" style="width: 100%;" required>
<option value="">Select Employee Type</option>
@if($employeetypes->count() > 0 )
@foreach($employeetypes as $employeetype)
<option value="{{$employeetype->id}}" @if($employeetype->id == $employee->employee_type_id) selected @endif>{{$employeetype->employee_type_name}}</option>
@endforeach
@endif
</select>
Upvotes: 1