Laravel - 如何为员工主管创建分层下拉列表



我正在开发一个带有Laravel-5.8的Web应用程序。

我有这个拉拉维尔模型:

class Employee extends Model
{
protected $table = 'employees';
protected $fillable = [
'employee_code',
'supervisor_id',
'first_name',
'emp_image',
'last_name',
];
public function supervisor()
{
return $this->belongsTo('AppModelsEmployee','supervisor_id');
}
}

控制器

public function index()
{
$employees = Employee::all();
return view('employees.index')->with('employees', $employees);
}

public function create()
{
$supervisors = Employee::all();
return view('employees.create')->with('supervisors', $supervisors);
}
public function store(StoreEmployeeRequest $request)
{
try {
$designation = Employee::create([
'employee_code'      => $request->employee_code,
'supervisor_id'        => $request->supervisor_id,
'first_name'           => $request->first_name,
'last_name'           => $request->last_name,
]);
Session::flash('success', 'Employee is created successfully');
return redirect()->route('employees.index');
} catch (Exception $exception) {
Session::flash('danger', 'Employee creation failed!');
return redirect()->route('employees.index');
}
}

创建刀片

<div class="form-group">
<label>Employee Code<span style="color:red;">*</span></label>
<input  type="text" name="employee_code" placeholder="Enter employee code here" class="form-control" value="{{old('employee_code')}}">
</div>
<select class="form-control select2bs4" data-placeholder="Choose Supervisor" tabindex="1" name="grade_level_id" style="width: 100%;">>
<option value="">Select Supervisor</option>
@if($supervisors->count() > 0)
@foreach($supervisors as $supervisor)
<option value="{{$supervisor->id}}">{{$supervisor->employee_code}}</option>
@endforeach
@endif
</select>

每个employee都有他或supervisor。主管派生自员工表 -supervisor_id。 选择主管下拉列表后,它将加载employee_code,然后将员工数据保存在数据库中。

我已经尝试了上面的代码,但下拉列表中没有任何内容。如何重写控制器、视图和模型来实现此目的?

您已经在 employees.create view 函数中发送了$supervisor,您应该发送$supervisors。

public function create()
{
$supervisors = Employee::all();
return view('employees.create')->with('supervisors', $supervisor);
}

并且您应该将选择名称更改为supervisor_id而不是grade_level_id。

<select class="form-control select2bs4" data-placeholder="Choose Supervisor" tabindex="1" name="supervisor_id" style="width: 100%;">>
<option value="">Select Supervisor</option>
@if($supervisors->count() > 0)
@foreach($supervisors as $supervisor)
<option value="{{$supervisor->id}}">{{$supervisor->employee_code}}</option>
@endforeach
@endif
</select>

最新更新