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语句中,对吗?例如,如果userdelete\u at
不是空的,那么运行这段代码?好的,作为最后一个问题,我显然在本地,我发现了***php/path to your project/artisan schedule:run>/dev/null 2>&1
我应该在本地的哪里添加这段代码?我不熟悉Laragon,但这可能会有帮助:我应该添加新函数吗?我应该将use-App\User
添加到内核吗?我不需要将此代码放在if语句中,对吗?例如,如果Userdelete\u at
不为空,则运行此代码?好的,作为最后一个问题,我显然是在本地的,我发现了***php/path to your project/artisan schedule:run>/dev/null 2>&1
我应该在我的本地应用程序中的何处添加此内容?我不熟悉Laragon,但这可能会有所帮助: