【发布时间】:2015-08-03 11:50:37
【问题描述】:
对三个对象之间的关系有一个脑残,希望有人可以帮助我。
我有四个模型:Team、User、ProjectType 和 Project
-
Team有很多User,有很多ProjectType -
User属于许多Team,拥有许多ProjectType -
ProjectType属于很多User,属于很多Team,有很多Project -
Project属于ProjectType
由于单个用户可以属于多个团队,我想请求User 可以访问的ProjectTypes,但仅限于他们当前登录的Team。可能User 可以访问多个团队的项目类型,但在任何时候只能登录到一个团队,所以我只需要那个子集。
我希望这种结构有意义,但我很难轻松访问我想要的数据
所以我想做$user->projectTypes 并获取该用户的所有项目类型,但只获取他们当前登录的团队的子集。
同样,一旦我得到它,我希望能够在该集合中获得$user->projectTypes->projects。
我想这样做,同时保持我从 Laravel 获得的所有良好的关系方法,但我正在努力设置数据结构来支持这一点,并依次获取数据。
值得补充的是,我正在使用 Laravel 4.2,但并没有与之绑定,如有必要,可以升级到 5.x 以获得此功能。
【问题讨论】:
-
查看 Laravel 的查询范围。我已经将它们用于非常相似的东西。您可以“预先”过滤 $user 查询的结果以仅显示与 teamId 相关的结果,而不是直接处理关系。
标签: laravel eloquent relationship