laravel auto hard delete - PullRequest
       6

laravel auto hard delete

0 голосов
/ 28 апреля 2018

У меня есть методы, где я могу soft delete мою модель, restore их и hard delete (стереть из базы данных) тему,

Пока все в порядке, кроме того, что я хочу, чтобы это было жесткое удаление после 30 days передачи из soft delete информации, таким образом, даже если администратор забудет жестко удалить модели, оно будет автоматически удалено через 30 дней .

Вот мои коды:

soft delete

public function destroy($id)
    {
        $user = User::findOrFail($id);
        $user->delete();
        Mail::to($user->email)->send(new adminsoftdeleteduser($user));
        return redirect()->route('users.index')->with('success', 'User successfully deleted.');
    }

restore

public function restore($id)
    {
        $user = User::onlyTrashed()->where('id', $id)->restore();
        // Mail::to($user->email)->send(new adminrestoreduser($user));
        return redirect()->route('users.index')->with('success', 'User successfully restored.');
    }

hard delete

public function forcedelete($id)
    {
        $user = User::where('id', $id)->forcedelete();
        Storage::delete($user->image);
        return redirect()->route('users.index')->with('success', 'User Permanently deleted.');
    }

Вопрос

  1. что мне добавить к моей функции hard delete, чтобы удалить мою модель после 30 дней deleted_at данных столбца?

Обновление

Я пробовал расписание по расписанию, и поскольку я не могу использовать cron job для его проверки, я использовал php artisan schedule:run, и вот результат, который я получил:

screen1

1 Ответ

0 голосов
/ 28 апреля 2018

Используйте Task Scheduler для автоматического запуска команды:

protected function schedule(Schedule $schedule)
{
    $schedule->call(function () {
        $users = User::whereNotNull('deleted_at')->where(
            'deleted_at', '<=', now()->subDays(30)->toDateTimeString()
        )->get();

        $users->each->forceDelete();
    })->daily();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...