苦苦挣扎 - 使用Laravel 5.4,我有三个表
事件
注册
状态
状态模式
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)
如何使用Eloquent实现这一目标?
答案 0 :(得分:0)
你可以使用像
这样的数据库在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;
}
答案 1 :(得分:0)
好的,我正在帮助我回答我自己的问题,谢谢你的提示。
以下是解决方案:
$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
}
]
干杯!