共有4个表:用户,所有者,群组,请求
所有者和请求之间没有直接关系,我正在寻找一种方法来执行以下操作:$ onwer->请求,以获取与所有者相关的所有请求
以下是工作原理:
每个用户都在一个组中,每个组都由一个所有者拥有,请求将由用户创建,每个请求都是针对一个(与一个内部相关的)组。
表格是这样的:
所有者:id,用户名
groups:id,name,owner_id,year
用户:id,用户名
group_user:id,group_id,user_id
请求:id,group_id,user_id,desc
在所有者和群组之间,或在请求和用户之间创建关系很容易,但我如何才能向所有者提供所有相关请求?另一件事是,我应该能够将所有请求归属于拥有年度语句的组中的所有者,例如年=某事。
现在我做这样的蠢事:
组和请求之间存在一对多的关系,因此我可以从组中获取所有请求。 (group hasMany request)
$groups = Group::where('owner_id', $owner_id)->get();
foreach($groups as $group)
foreach($group->requests as $request)
if($request->year == 2016)
$requests[] = $request;
答案 0 :(得分:1)
对于其他寻找相同内容的人来说,其背后的概念被 Laravel 称为hasManyThrough
。
在这种情况下,我们将在所有者的班级模型
中拥有以下功能public function requests() {
return $this->hasManyThrough(\App\Request::Class, \App\Group::Class);
}
这里的逻辑是Owner
有很多Requests
(第一个参数)到 Group
类(第二个参数)。