【问题标题】:How to get list of users in laravel 5如何在 laravel 5 中获取用户列表
【发布时间】:2016-08-23 00:09:37
【问题描述】:

我正在处理一个项目。我在不同的路线中需要一些基本的价值观。例如在不同的页面/路线中显示用户、位置、产品的列表。所以我想为这些创建一个通用方法,比如我想显示用户列表的地方,我将为用户调用该方法并将此列表传递给查看。

我试过以下方法:

$usersArr = User::where('loc_id',session('organization'))
  ->where('status', '!=', 'Deleted')
  ->orderBy('id', 'desc')
  ->lists('username', 'id');

所以我想知道定义这些方法的最佳位置。我应该在 Model、Controller 中定义它还是创建某种类型的常用函数?

【问题讨论】:

    标签: php laravel-5 eloquent laravel-request


    【解决方案1】:

    创建 CommonModel ,并在那里定义函数..并调用该模型

    【讨论】:

    • 我们不能在 app 文件夹中创建公共文件,而不是创建模型吗?
    【解决方案2】:

    这是一个常见的问题。我认为最流行的方法是为此创建一个 Repository 类(例如名称为 UserRepository)。您可以像这样定义 repo 方法:

    class UserRepository{
    
        public static function getOrganizationActiveUsers($organization){
            return User::where('loc_id', $organization)
                  ->where('status', '!=', 'Deleted')
                  ->orderBy('id', 'desc')
                  ->lists('username', 'id');
        }
    
    }
    

    然后在其他类中使用此方法,例如:

    $variable = UserRepository::getOrganizationActiveUsers(session('organization'));
    

    这样,您的班级就不必知道存在某种会话。例如,如果您在访问特定 API 时无法访问会话,这将非常有用。

    您也可以通过这种方式将您的存储库注入您的控制器(或任何其他类)中:

    <?php 
    
    
    use Namespace/SubnameSpace/UserRepository; // this is very important, to specify the correct full classname with namespace; 
    
    
    class SomeController
    {
    
    
        __construct(UserRepository $userRepo) 
        {
            $this->userRepo = $userRepo;
        }
    
        public  function showUserOrganizationUsers()
        {
            $users = $this->userRepo->getOrganizationActiveUsers(session('organization'));
    
            return $users;
        }
    
    }
    

    这也很方便,例如,如果你想注入一个完全不同的类但使用相同的方法。 (如果您想深入了解依赖注入,请阅读有关接口和 Laravel DI 容器的信息,它们在注入依赖项时提供了很多便利。我上面展示的只是一种简单的方法)。

    顺便说一句,您可以在这里查看一些采用不同方法的示例代码库: Awesome Laravel on GitHub

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2016-01-21
      • 2016-12-16
      • 2016-10-20
      • 1970-01-01
      • 2017-09-06
      相关资源
      最近更新 更多