我想算一家公司的员工数量。
所以它显示为:McDonalds - 200 Employees
(示例)
型号:
public function getTotalWorkers()
{
return $this->hasMany('App\User')->whereCompanyId($this->company_id)->count();
}
查看:
@foreach($companies as $company)
<tr>
<td>{!! link_to_route('company.edit', $company->name, [$company->id] )!!}</td>
<td>{{ $getTotalWorkers }}</td>
<td>{{ ' /' }}</td>
<td>{{ $company->parent_id }}</td>
<td>{{ ' /' }}</td>
<td>{{ $company->active }}</td>
</tr>
@endforeach
控制器:
public function index()
{
$getTotalWorkers = $this->company->getTotalWorkers();
$companies = Company::get();
return view('company.index', ['companies' => $companies, 'getTotalWorkers' => $getTotalWorkers]);
但是这给了我一个错误:Call to a member function getTotalWorkers() on a non-object
我该如何解决这个问题或者我做错了什么?
答案 0 :(得分:1)
您似乎在getTotalWorkers()
上呼叫$post
,而不是在您发布的视图片段的第四行上呼叫$company
。
答案 1 :(得分:0)
你如何做到目前从根本上不适用于你想要它做什么。
您正在使用Controller类的当前调用 - &gt; getTotalWorkers():
$getTotalWorkers = $this->company->getTotalWorkers();
这不会起作用,因为控制器没有这种方法(你使用$ this-&gt;告诉PHP在当前类上调用它,它将在你的模型类中工作但不在你的控制器上。你必须调用在某事上,即公司)。
要让它按照您的需要运行,请从控制器中删除该行,同时删除"getTotalWorkers" => $getTotalWorkers,
。
在您的视图中,您可以更改:
<td>{{ $getTotalWorkers }}</td>
要:
<td>{{ $company->getTotalWorkers() }}</td>
可以计算每家公司的员工人数。请注意,这将为您列出的每个不同公司运行新查询。