2015-05-12 13 views
0

我想統計一家公司的員工數量。 因此,它示出了這樣的:McDonalds - 200 Employees(例如)來自數據庫的Laravel計數

型號:

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 我該如何解決這個問題或我做錯了什麼?

回答

1

它看起來像你打電話getTotalWorkers()$post,而不是$company在你已發佈的視圖片段的第四行。

+0

我修改了帖子,發生了一些錯誤 – Liam

0

你目前的做法基本上不適用於你想做的事情。

您正在呼喚 - > getTotalWorkers()在你的控制器類,因爲你正在使用:

$getTotalWorkers = $this->company->getTotalWorkers(); 

這不會工作,因爲控制器沒有這個方法(您使用$這個 - >告訴PHP在當前類上調用它,它將在你的模型類中工作,但不在你的控制器上,你必須在某個東西上調用它,即公司)。

爲了讓它工作,你想要它,從控制器中刪除該行,也刪除"getTotalWorkers" => $getTotalWorkers,

在您看來,您可以更改: <td>{{ $getTotalWorkers }}</td>

要:

<td>{{ $company->getTotalWorkers() }}</td> 

這將讓它來計算職工人數每家公司。請注意,這將爲您列出的每個不同公司運行一個新的查詢。

+0

隨着你的改變,它給了我'調用未定義的方法Illuminate \ Database \ Query \ Builder :: getTotalWorkers() – Liam