首页 > 解决方案 > Laravel - 如何为员工主管创建分层下拉列表

问题描述

我正在使用Laravel-5.8.

我有这个 Laravel 模型:

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('App\Models\Employee','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');
    }
}

创建.blade

<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人都有他的 or supervisor。主管来自员工表 - supervisor_id。When the supervisor dropdownlist is selected it loads employee_codeand then save the employee data in the database.

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

标签: phplaravel

解决方案


您已经在 employees.create 视图函数中发送了 $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>

推荐阅读