Как получить список пользователей в laravel 5

Я работаю над проектом. Мне потребовались некоторые базовые значения в разных маршрутах. например показать список пользователей, мест, продуктов на разных страницах / маршрутах. Поэтому я хотел создать общий метод для них, например, где я хочу показать список пользователей. Я вызову метод для пользователя и передам этот список для просмотра.

Я попробовал следующий метод:

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

Поэтому я хотел знать, какое место лучше всего подходит для определения таких методов. Должен ли я определить это в модели, контроллера или создать какой-то тип общих функций?

0

Решение

Создайте CommonModel и определите функцию там .. и назовите эту модель

0

Другие решения

Это общий вопрос. Я думаю, что самый популярный подход — создать для этого класс Repository (например, с именем UserRepository). Вы можете определить метод репо следующим образом:

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.

Также вы можете добавить свой репозиторий в свой контроллер (или любой другой класс) следующим образом:

<?phpuse 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, которые обеспечивают большое удобство при внедрении зависимостей. То, что я показал выше, является простым способом).

Кстати, вы можете проверить некоторые примеры кодовых баз с различными подходами здесь:
Удивительный Laravel на GitHub

0

По вопросам рекламы [email protected]