我有一个问题..在我的程序中,我需要一个集合User,另一个集合,其中包含用户参与的所有项目以及hours他在每个项目中工作的数量。我有 3 个表来解决这个问题:users 表,很简单的搭配。projects 桌子。time_entries,与user_id和project_id。Aproject可以有很多time_entries和userto。我已经测试过了,但它不起作用:$users = User::join('time_entries', 'users.id', '=', 'time_entries.user_id') ->whereBetween('spent_on', [($request->input('debut')), ($request->input('fin'))]) ->join('projects', 'time_entries.project_id', '=', 'projects.id') ->selectRaw('user_id , project_id, sum(hours) as sum') ->get();
1 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
您可以使用Laravel Eloquent定义/模型之间的多对多关系:UserProject
/** User.php */
public function projects()
{
return $this
->belongsToMany(Project::class, 'time_entries')
->withPivot('hours');
}
——
/** Project.php */
public function users()
{
return $this
->belongsToMany(User::class, 'time_entries')
->withPivot('hours');
}
然后只需访问关系:
/** UserController.php */
public function myFunction()
{
$users = User::with('projects')->get();
// this $users collection will have another collection inside (projects).
$projects_of_first_user = $users->first()->projects;
}
- 1 回答
- 0 关注
- 128 浏览
添加回答
举报
0/150
提交
取消