
Одной из самых важных вещей в веб-приложении является автоматическое планирование действий с моделями, поэтому нам не придется беспокоиться о логике, которая меняется в зависимости от времени.
Такие действия, как истечение срока действия учетной записи, уведомление о смене пароля и другие, могут выполняться автоматически и в нужное время.
Итак, давайте возьмем первый пример об истечении срока действия учетной записи и попробуем запланировать действия с моделями с помощью Laravel.
По умолчанию Laravel предоставляет нам миграцию пользователей. Нам нужно добавить два столбца в миграцию таблицы users.
Во-первых, давайте добавим столбец expired_at, который должен быть типа timestamp. Этот столбец позволит нам определить дату истечения срока действия учетных записей пользователей.
Во-вторых, мы должны добавить столбец status с логическим типом. Это даст нам возможность активировать/деактивировать учетные записи пользователей по мере необходимости.
Итак, давайте перейдем к файлу миграции пользователей и добавим следующие строки:
$table->timestamp('expired_at')->nullable();
$table->boolean('status')->default(1);
Теперь мы запустим:
php artisan migrate
После этого нам нужно перейти к пользовательской модели, чтобы написать два метода области видимости, один для получения active пользователей, а другой для expired пользователей:

Для автоматизации этого действия над пользователями мы запустим следующую строку, чтобы создать команду Laravel:
php artisan make:command HandleUserExpiration
Эта команда предоставит нам метод handle(), и мы можем написать в нем что угодно.
Для отключения просроченной учетной записи мы должны написать эти строки:

Последним шагом является планирование команды HandleUserExpiration путем перехода к App\Console\Kernel.php и добавления частоты для ее автоматического запуска:

Эта команда запустится автоматически в фоновом режиме и отключит просроченные учетные записи пользователей.
Мы можем запускать его чаще, например: everyMinute() или реже, например everyDay(), и если нужно деактивировать так много пользователей, мы можем использовать отложенную загрузку Laravel для повышения производительности и разделения данных!
ЧИТАТЬ ДАЛЕЕ:
- Использование Elasticsearch с Laravel
- Предварительное кэширование Laravel: повысьте скорость и производительность вашего приложения!
- Совместное использование контроллеров Laravel, событий, прослушивателей, сервисов и валидации!
- Докеризация Laravel, Nginx, MariaDB, PhpMyAdmin, Redis и Npm
- Новый метод FindOr() в Laravel
- Laravel добавляет префикс к ключу массива!