Laravel - 每个事件
问题描述:
人际关系挣扎伯爵的注册状态 - 使用Laravel 5.4,我有三个表Laravel - 每个事件
-
事件
- ID
- 名
- 等领域..
-
注册
- ID
- EVENT_ID
- STATUS_ID
- 等领域...
-
状态
- ID
- 名
- 等领域...
状态模式
public function registrations()
{
return $this->hasMany(Registration::class);
}
事件模型
public function registrations()
{
return $this->hasMany(Registration::class);
}
注册模式
public function statuses()
{
return $this->belongsTo(Status::class, 'status_id');
}
public function events()
{
return $this->belongsTo(Event::class, 'event_id');
}
和我EventsController看起来像这样
public function findRegistrations($id)
{
$viewEvent = Event::find($id)->registrations;
return view('events.details', compact('viewEvent'));
}
我只需要计数状态为每个事件的数量,因为我有不同的状态
- 新
- 评论
- 已批准
-
拒绝
和我需要显示对叶片模板中的每个状态号,例如
新(5)
- 评价(9)
- 核准(4)
- 被拒绝(10)
我该如何使用雄辩?
答
好吧,我回答我自己的问题硫铁矿的帮助,感谢提供暗示。
这里是解决方案:
$status = Status::select([
'statuses.id',
'statuses.statusName',
\DB::raw('count(registration.status_id) as count')
])->join('registration','registration.status_id','=','statuses.id')
->where('event_id', '=', $id)
->groupBy('registration.status_id')
->get();
return $status;
我希望它可以帮助别人!
结果
[
{
id: 1,
statusName: "NEW",
count: 10
},
{
id: 2,
statusName: "REVIEWED",
count: 14
},
{
id: 3,
statusName: "APPROVED",
count: 12
},
{
id: 4,
statusName: "REJECTED",
count: 3
}
]
干杯!
答
您可以使用DB像
您EventsController的顶部添加此:
use DB;
则是这样的:
public function getStatusForEvent($id)
{
$status = DB::table('status')
->join('registrations', 'registrations.status_id', '=', 'status.id')
->where('registrations.event_id', '=', $id)
->get();
return $status;
}
如何计算每个事件的状态数? –
如果每个注册都有一个状态,那么只需计算注册数量,如果不是从我的函数 –
返回计数($状态)但事情是,每个状态可能会有所不同。我有四种类型的状态 - 新建,已审核,已接受,已拒绝。我需要获取每个事件的数量并根据事件显示该数字 –