php - 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_code
and then save the employee data in the database.
我已经尝试了上面的代码,但下拉列表中没有任何内容。我如何重写我的控制器、视图和模型来实现这一点?
解决方案
您已经在 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>
推荐阅读
- node.js - 无法在本地通过nodejs数据库连接到PostgreSQL它突然停止在mac上工作
- node.js - 如何在 Firebase 函数中使用 CircleCI 环境变量
- django - Django UUIDField 文档说可以序列化,但迁移将其标记为“serialize=False”
- mysql - 在 Xampp 上安装 Dreamfactory
- reactjs - 尝试朗姆酒 npm start 命令时出错
- python - 如何将嵌套数组中的每个数组转换为数据框中的行?
- mysql - Mysql通过读取txt文件更新表?
- git - 无法通过命令行将我的 Web 应用程序推送到 GitHub 存储库
- time-complexity - 不同参数顺序操作的时间复杂度
- apache-spark - Hadoop:火花作业无法处理小数据集