我如何一次清除一个函数/方法,但使用此多重查询Laravel

时间:2018-12-12 10:24:02

标签: eloquent laravel-5.7

这是我的users桌子

1.id
2.name
3......

我的branches

1.id
2.branch_name
3....

members

1.id
2.branch_id
3.user_id
4.member_name
5......

一个数据透视表名称branch-users

1.id
2.user_id
3.branch_id

branch_user数据透视表中用户存储的允许分支ID,当该用户输入任何成员时,他只能在<select></select>字段中看到他的分配分支列表,或者要查看成员列表。他只能看到他的Assign分支成员列表。我已经在Laravel控制器中实现了这种查询

我的索引方法部分

public function index(){
   $my = Auth::user()->branches;// branches is a many to many relation method in user model
     foreach($my as $my){
      $myBranch[] = $my->id;
      }
   $member = Member::whereIn('branch_id',$myBranch)->get();
   return view('member.create',compact('member'))
}

我的创建方法部分

public function create(){
  // i have to check every where this section...from....... 
   $my = Auth::user()->branches;
     foreach($my as $my){
      $myBranch[] = $my->id;
      }
  //.......to here
   $branch = Branch::whereIn('id',$myBranch)->get();
   return view('member.create',compact('branch'))
}

我的问题是我想使用此 ::whereIn('branch_id',$myBranch)->.... 来显示分支列表和分支成员列表的条件,到处都必须声明并检查用户分配的不好的分支列表在Laravel框架中,我知道有很多机会可以一次声明任何函数,并且可以多次使用该函数/方法/变量。我想检查,一次通过身份验证的用户分配分支ID,并在需要时使用多个时间。但不幸的是,我不知道该怎么办。如果有人理解我想说的话,请帮助我。

1 个答案:

答案 0 :(得分:0)

您可能想编写一个本地范围查询。您将查询逻辑的一部分放在模型上,然后可以在尝试查询该模型的任何地方调用它。

https://laravel.com/docs/5.7/eloquent#local-scopes