Php 自动硬删除

Php 自动硬删除,php,laravel,Php,Laravel,我有方法可以软删除我的模型,恢复它们和硬删除(从数据库中擦除)主题 到目前为止,一切都还可以,我想补充的是,在soft deleteinfo传递的30天后硬删除,这样即使管理员忘记硬删除模型,它也会在30天后自动删除 这是我的密码: 软删除 public function destroy($id) { $user = User::findOrFail($id); $user->delete(); Mail::to($user->

我有方法可以
软删除
我的模型,
恢复
它们和
硬删除
(从数据库中擦除)主题

到目前为止,一切都还可以,我想补充的是,在
soft delete
info传递的
30天后硬删除,这样即使管理员忘记硬删除模型,它也会在30天后自动删除

这是我的密码:

软删除

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

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.');
    }
硬删除

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.');
    }
public function forcedelete($id)
    {
        $user = User::where('id', $id)->forcedelete();
        Storage::delete($user->image);
        return redirect()->route('users.index')->with('success', 'User Permanently deleted.');
    }
问题
  • 要删除我的
    硬删除
    功能,我应该添加什么 在列数据处删除
    30天后的模型
  • 使现代化 我尝试了调度方式,但由于无法使用cron job进行测试,因此我使用了
    php artisan schedule:run
    ,结果如下:

    使用自动运行命令:

    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();
    }
    
    受保护功能计划(计划$schedule)
    {
    $schedule->call(函数(){
    $users=User::whereNotNull('deleted_at')->where(
    '已删除','使用自动运行命令:

    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();
    }
    
    受保护功能计划(计划$schedule)
    {
    $schedule->call(函数(){
    $users=User::whereNotNull('deleted_at')->where(
    

    “deleted_at',@SaadSuri我认为它应该有更简单的方法,比如使用
    carbon
    对吗?这取决于你觉得它有多简单。但是它在linux上可以工作,因为cron在linux上工作linux@SaadSuri我以前没有使用laravel schedule的经验,所以我不能说我觉得这很容易,也不能说我如何在内核中查询我的需求用
    carbon
    帮助我,或者至少指导我完成这个计划?@SaadSuri我有另一个相关的问题,也许你可以帮我?@SaadSuri我认为它应该有更简单的方法,比如使用
    carbon
    对吧?取决于你觉得它有多容易。但是它在linux上可以工作,因为cron在linux上工作linux@SaadSuri我不知道以前有过laravel日程安排的经验,所以我不能说我觉得这很容易,也不能说我如何在内核中查询我的需求。你能帮我
    carbon
    吗,或者至少能指导我完成这个日程安排吗?@SaadSuri我有另一个与此相关的问题,也许你能帮我一下?我应该添加新功能吗?我应该添加
    use App\User 到内核?我不需要把这段代码放在if语句中,对吗?例如,如果user
    delete\u at
    不是空的,那么运行这段代码?好的,作为最后一个问题,我显然在本地,我发现了
    ***php/path to your project/artisan schedule:run>/dev/null 2>&1
    我应该在本地的哪里添加这段代码?我不熟悉Laragon,但这可能会有帮助:我应该添加新函数吗?我应该将
    use-App\User
    添加到内核吗?我不需要将此代码放在if语句中,对吗?例如,如果User
    delete\u at
    不为空,则运行此代码?好的,作为最后一个问题,我显然是在本地的,我发现了
    ***php/path to your project/artisan schedule:run>/dev/null 2>&1
    我应该在我的本地应用程序中的何处添加此内容?我不熟悉Laragon,但这可能会有所帮助: