mikefolu
mikefolu

Reputation: 1323

"SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'Select Employee Type' for column 'employee_type_id' at row 1 in Laravel

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 set first_name = Jacob, last_name = Brown where id = 1) ◀"

How do I resolve it.

Thanks

Upvotes: 0

Views: 985

Answers (1)

STA
STA

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

Related Questions