それはよくある質問です。最も一般的なアプローチは、そのための 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