2015-05-13 143 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