Laravel views - 将多个数组传递给一个视图
Laravel views - passing multiple arrays to a view
在我的 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'));
}
我的数据库的结构使得当用户点击一个职位并发送消息时,对话中的一行 table 被创建,其中包含职位的 ID(我的详细架构可以在这里找到: http://www.laravelsd.com/share/8nBZmc)
计数函数应该取决于作业的 ID,但是,如何将 $jobs 数组中的 ID 传递到 $count 变量中,以加载到我的视图中?这是否应该使用视图编辑器,即使它们只会出现在一个视图中?
编辑:基本上我试图在视图中列出所有作业并显示在它们旁边,它们各自的消息计数
不清楚是什么问题,但我想你想用所有的作业 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();
}
在我的 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'));
}
我的数据库的结构使得当用户点击一个职位并发送消息时,对话中的一行 table 被创建,其中包含职位的 ID(我的详细架构可以在这里找到: http://www.laravelsd.com/share/8nBZmc)
计数函数应该取决于作业的 ID,但是,如何将 $jobs 数组中的 ID 传递到 $count 变量中,以加载到我的视图中?这是否应该使用视图编辑器,即使它们只会出现在一个视图中?
编辑:基本上我试图在视图中列出所有作业并显示在它们旁边,它们各自的消息计数
不清楚是什么问题,但我想你想用所有的作业 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();
}