Php 拉威尔全局变量

Php 拉威尔全局变量,php,laravel,Php,Laravel,我有一个简单的代码,向用户显示他从数据库收到的所有通知: $user\u notifications=DB::table('notifications')->where('user\u id',$this->user->id)->orderBy('id','desc')->get(); 问题是我有太多的控制器和函数,我不想在每个函数和控制器的任何地方重复这些代码。如何使$user\u notifications变量成为全局变量并在任何地方使用它?您需要创建一个NotificationRepos

我有一个简单的代码,向用户显示他从数据库收到的所有通知:

$user\u notifications=DB::table('notifications')->where('user\u id',$this->user->id)->orderBy('id','desc')->get();


问题是我有太多的控制器和函数,我不想在每个函数和控制器的任何地方重复这些代码。如何使
$user\u notifications
变量成为全局变量并在任何地方使用它?

您需要创建一个
NotificationRepository

class NotificationsRepository
{
    private Notifications $model;

    public function __construct(Notification $model)
    {
        $this->model = $model;
    }

    public function findByUserId(int $userId): Collection
    {
        return $this->model->where('user_id', $userId)->orderBy('id', 'desc')->get();
    }
}
然后在控制器操作中,通过自动连线添加此存储库

class SomeController extends Controller
{
    public function someAction(NotificationRepository $repository, int $id)
    {
        $notifications = $repository->findByUserId($id);
    }
}
或者这样,我不知道你是如何运用你的行动的

class SomeController extends Controller
{
    public function someAction(NotificationRepository $repository, Illuminate\Http\Request $request)
    {
        $notifications = $repository->findByUserId($request->user()->id);
    }
}

为这段代码创建一个新函数或类有什么不对?请阅读关于抽象的内容。