2015-05-13 149 views
0

有几个关系。一个公司有许多工人,一个工人属于一个公司。Laravel计数与关系数据库数

现在我有一张公司信息表,我想要一个公司的员工总数列。 像这样: 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 - 调用未定义的方法照亮\数据库\查询\生成器:: getTotalWorkers()

需要我的代码进行任何进一步的信息,我可以张贴权远。

+0

'$ this-> company'指向什么? –

+0

它只是计算只有该公司的工人数量,而不是统计所有公司的所有工人,所以我尝试了一些东西,但它显然不工作,但我不知道该怎么做才知道要做什么它工作,所以它可能不涉及任何问题 – Liam

回答

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