首页 > 解决方案 > Laravel Eloquent 模型,向 ->get() 函数添加查询

问题描述

我想覆盖我的客户模型中的 get 函数。

 public function get(array $options = [])
 {
   $user = \Auth::user();

   if($user->role_id == 1){
     return parent::get();

   }else if($user->role_id == 4){
     return parent::where("user_id", $user->id)->get();

   }else if($user->role_id == 3){
     $users = User::where("user_id", $user->id)->get();

     return parent::where("user_id", $user->id)->orWhereIn('user_id', $users)->get();
   }
  }

这可能吗 ?

标签: laraveleloquent

解决方案


你需要的是global scopes

全局范围允许您为给定模型的所有查询添加约束。Laravel 自己的软删除功能利用全局范围仅从数据库中提取“未删除”模型。编写自己的全局作用域可以提供一种方便、简单的方法来确保给定模型的每个查询都接收到某些约束。

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


推荐阅读