2015-04-14 55 views
2

在我的Laravel應用程序,我通過的作業列表完成到一個視圖,也送過來已派出有關工作信息的數量:Laravel觀點 - 傳遞多個陣列視圖

public function index() 
{ 
    $jobs = $this->job->getUsersOwnJobs(Auth::id()); 

    $jobId = $jobs['id']; // This is an example of what I'm trying to do 
    $count = $this->message->model->whereHas('conversation.job', 
     function($q) use ($jobId) { 
      $q->where('id', $jobId); 
     }) 
    ->count(); 

    return view('myjobs.index', compact('jobs', 'count')); 
} 

我的數據庫的結構,這樣,當用戶點擊一個作業,併發送一條消息,在創建其中包含作業的ID談話表中的行(我的詳細架構可以在這裏找到:http://www.laravelsd.com/share/8nBZmc

計數函數應該取決於作業的ID,但是,如何將ID從$ jobs數組傳遞到$ count變量,t加載到我的意見?這是否應該使用視圖作曲家,儘管他們只會出現在一個視圖中?

編輯:基本上,我想列出旁邊有一個視圖,並顯示所有的工作,他們各自的郵件數

回答

1

目前尚不清楚是什麼問題,但我想你想使用計算所有的工作ID,是嗎?

所以,如果是這樣的話,這裏是你需要的東西:

public function index() 
{ 
    $jobs = $this->job->getUsersOwnJobs(Auth::id()); 

    $jobsIds = $jobs->lists('id'); // this will give you an array with all the ids of the jobs you want. 

    $count = $this->message->model->whereHas('conversation', 
     function($q) use ($jobId) { 
      $q->whereIn('job_id', $jobsIds); 
     }) 
    ->count(); 

    return view('myjobs.index', compact('jobs', 'count')); 
} 

編輯:

如果你需要的是有消息爲每個作業算,這樣做:

工作模式:

public function messages() 
{ 
    return $this->hasManyThrough('Message', 'Conversation'); 
} 

所以在您的視圖中,您可以直接調用消息:

foreach($jobs as $job) 
{ 
    $job->messages()->count(); 
} 

,或者,如果你渴望加載的信息關係:

foreach($jobs as $job) 
{ 
    $job->messages->count(); 
} 
+0

優秀建議,在工作模型中使用hasManyThrough!進一步+1提供熱切的加載關係! –