如何获得laravel 5中的用户列表

时间:2016-04-28 09:52:12

标签: php laravel-5 eloquent laravel-request

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

我尝试过以下方法:

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这是一个常见的问题。我认为最流行的方法是为它创建一个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