Одной из самых важных вещей в веб-приложении является автоматическое планирование действий с моделями, поэтому нам не придется беспокоиться о логике, которая меняется в зависимости от времени.

Такие действия, как истечение срока действия учетной записи, уведомление о смене пароля и другие, могут выполняться автоматически и в нужное время.

Итак, давайте возьмем первый пример об истечении срока действия учетной записи и попробуем запланировать действия с моделями с помощью 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 для повышения производительности и разделения данных!

ЧИТАТЬ ДАЛЕЕ: