Laravel计数数字与关系

时间:2015-05-13 10:51:31

标签: html database laravel count

有一些关系。一家公司有很多工人,一个工人属于公司。

现在我有一张包含公司信息的表格,我希望列出一个公司拥有的工人总数。 像这样: enter image description here

“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()

我可以立即发布有关我的代码的任何进一步信息。

1 个答案:

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