Laravel глобальная переменная - PullRequest
0 голосов
/ 30 марта 2020

У меня есть простой код, который отображает пользователю все его уведомления, полученные из базы данных:

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

проблема в том, что у меня слишком много контроллеров и функций в них и я не хочу дублировать этот код везде, в каждой функции и контроллере. Как я могу сделать переменную $user_notifications глобальной и использовать ее везде?

1 Ответ

0 голосов
/ 30 марта 2020

вам нужно создать 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...