Laravel全局变量



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

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

问题是我有太多的控制器和函数,我不想在每个函数和控制器中到处重复这些代码。如何使$user_notifications变量全局化并在任何地方使用它?

u需要创建一个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, IlluminateHttpRequest $request)
{
$notifications = $repository->findByUserId($request->user()->id);
}
}

最新更新