Как обновлять бд до начала работы контроллеров?

При заходе на, скажем так , любую страницу мне нужно проверять бд на наличие просроченных тасков и если такие есть обновлять некоторые поля. Необходимо делать это до начала работы конроллеров и отображения вьюх. Я пробовал использовать middleware, но тут всплывала проблема: у меня из GET запроса бралась переменная
function index(Skill $skill)
{
    ...
}

Дело в том, что сначала laravel находит этот skill в бд, а потом уже начинается работа middleware, где он обновляется и в результате на странице будет отображаться "старая" версия модели.

Я пробовал делать через view composer в провайдере и все в принципе работало. Но мне кажется это костыль, ведь vc нужен как я знаю для отправки переменных в определенные вьюхи, а мне нужно просто обновить бд.
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Yan-s
Попробуйте создать свой свервис провайдер который будет отвечать за проверку тасков и обновление полей, зарегистрируйте его перед RouteServiceProvider. Тогда обновления должны будут произойти перед получением модели для контроллера.
Ответ написан
в Controller сделай конструктор

<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    public function __construct()
    {
        $this->middleware(function ($request, $next) {

            return $next($request);
        });
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы