我有一个问题..在我的程序中,我需要一个集合User
,另一个集合,其中包含用户参与的所有项目以及hours
他在每个项目中工作的数量。
我有 3 个表来解决这个问题:
users
表,很简单的搭配。projects
桌子。time_entries
,与user_id
和project_id
。Aproject
可以有很多time_entries
和user
to。
我已经测试过了,但它不起作用:
$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();
您可以使用Laravel Eloquent定义/模型之间的多对多关系:User
Project
/** 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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句