Laravel 6,统计每个部门的员工人数

Laravel 6,统计每个部门的员工人数,laravel,bootstrap-4,Laravel,Bootstrap 4,我正在拉威尔6号处理一对多的关系。我有两种模式:部门和员工;两个DB表:部门(id、名称、详细信息)和员工(emp\u id、emp\u名称等) 下面是我的代码,它给出了我的错误: 为foreach()提供的参数无效(视图:C:\Users…) 如何计算和显示每个部门的员工人数 刀片视图: @foreach($departments as $department) <h4><strong>{{ $department->name }}</strong>

我正在拉威尔6号处理一对多的关系。我有两种模式:
部门
员工
;两个DB表:
部门(id、名称、详细信息)
员工(emp\u id、emp\u名称等)

下面是我的代码,它给出了我的错误:

为foreach()提供的参数无效(视图:C:\Users…)

如何计算和显示每个部门的员工人数

刀片视图:

@foreach($departments as $department)
  <h4><strong>{{ $department->name }}</strong></h4>
  <h5>{{ $department->detail }}</h5>

  <ul>
  @foreach($department->person as $employee)
    <li> {{ $employee->emp_id }}</li>
    <li> {{ $employee->emp_name}}</li>
  @endforeach
  </ul>
@endforeach
@foreach($departments作为$department)
{{$department->name}
{{$department->detail}
    @foreach($department->person as$employee)
  • {{$employee->emp_id}
  • {{$employee->emp_name}
  • @endforeach
@endforeach
控制器:


这里有三个问题:

首先,对于生成外键名,Laravel使用所有者表名的单数形式,并向其添加
\u id
。在您的情况下,对于
部门
表,它将生成
部门id
,并希望您在
员工
表中有此列

您应该在表中重命名列,或者在关系定义中显式指定它:

班级部门扩展模型{
// ...
职能雇员()
{
返回$this->hasMany(Employee::class,“dept_id”);
}
}
类雇员扩展模型{
// ...
职能部门()
{
返回$this->belongsTo(Department::class,'dept_id');
}
}
下一步,在使用特定列时,您应该:

使用此功能时,应始终在要检索的列列表中包含id列和任何相关外键列

最后,您的关系名称是
$department->employees
,但在模板中您试图使用
$department->person
。这就是
@foreach
无法迭代
null
值的原因。

在控制器中添加

use App\Models\Department;
然后在控制器中的“显示”或“显示”功能中

$dept_count= Department::all()->count();
然后返回视图

return view('department', compact('dept_count'));
您可以直接调用此函数来显示部门中的总数

{{$dept_count}}

你能告诉我你的错误是什么,它被哪一行抓住了吗?请检查你得到的dd($department->toArray())在此数据共享的第一个loopShow图像中,显示错误、型号和控制器代码的精确行。您能否在部门模型中显示部门与员工之间的关系设置,以及如何将
$departments
传递到视图此处要求统计每个部门的员工数量。您的答案将生成e部门数目。