为了账号安全,请及时绑定邮箱和手机立即绑定

如何在另一个集合中拥有一个集合?

如何在另一个集合中拥有一个集合?

PHP
呼啦一阵风 2021-06-11 15:25:32
我有一个问题..在我的程序中,我需要一个集合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;

}


查看完整回答
反对 回复 2021-06-13
  • 1 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信