Laravel Count来自数据库

时间:2015-05-12 11:30:51

标签: laravel count

我想算一家公司的员工数量。 所以它显示为: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 我该如何解决这个问题或者我做错了什么?

2 个答案:

答案 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>

可以计算每家公司的员工人数。请注意,这将为您列出的每个不同公司运行新查询。