有一些关系。一家公司有很多工人,一个工人属于公司。
现在我有一张包含公司信息的表格,我希望列出一个公司拥有的工人总数。 像这样:
“medewerkers”(贡献者/工人)表中的工人数量。
现在我一直在尝试一些东西,我无法弄明白。
查看:
@foreach($companies as $company)
<tr>
<td>{!! link_to_route('company.edit', $company->name, [$company->id] )!!}</td>
<td>{{ $company->getTotalWorkers() }}</td>
<td>{{ ' /' }}</td>
<td>{{ $company->parent_id }}</td>
<td>{{ ' /' }}</td>
<td>{{ $company->active }}</td>
</tr>
@endforeach
控制器:
public function index()
{
$companies = Company::get();
$getTotalWorkers = $this->company->getTotalWorkers();
return view('company.index', ['companies' => $companies, 'getTotalWorkers' => $getTotalWorkers]);
}
型号:
class Company extends Eloquent{
public function getTotalWorkers()
{
return $this->hasMany('App\User')->whereCompanyId($this->company_id)->count();
}
这是我所拥有的,但会以任何方式出错:
BadMethodCallException - 调用未定义的方法Illuminate \ Database \ Query \ Builder :: getTotalWorkers()
我可以立即发布有关我的代码的任何进一步信息。
答案 0 :(得分:1)
如果您的Company
模型与员工有关系,那么您可以算一下:
class Company extends Eloquent {
public function employees()
{
return $this->hasMany('Employee');
}
public function numberOfEmployees()
{
return $this->employees()->count();
}
}
在您的控制器中,如果您想要公司列表和每家公司的员工数量,那么您最好是急切地加载员工关系并在您的循环中进行计数:
控制器操作:
public function index()
{
$companies = Company::with('employees')->get();
return View::make('company.index', array('companies' => $companies));
}
查看:
@foreach ($companies as $company)
<tr>
<td>{{{ $company->name }}}</td>
<td>{{{ $company->employees->count() }}}</td>
</tr>
@endforeach