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