我想要创建一个cron作业,它在Laravel中触发一个任务/命令来删除所有一周前的记录。我试图使用ExpressiveDate来帮助我评估时间。在Laravel做这件事最好的方法是什么?
我已登记命令:
Artisan::add(new removeWeek);并在/app/命令下创建了一个removeWeek.php命令,运行良好。我正在寻找最好的语法-an雄辩的方式-遍历我的记录,只删除一个星期前从今天的记录。cron任务每天运行一次。
发布于 2014-01-25 12:58:10
看来你已经准备好了,所以现在你只需要
Calendar::where('created_at', '<', \Carbon\Carbon::now()->subWeek())->delete();最后一件事:类名按常规大写:
class RemoveWeek() {
}发布于 2021-08-05 18:14:38
定期删除记录的laravel方法是使用特性Illuminate\Database\Eloquent\Prunable。
这将帮助您通过实现prunable方法来删除不再需要的模型,该方法返回一个解析要删除的模型的出色的查询生成器。
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Prunable;
class Post extends Model
{
use Prunable;
/**
* Get the prunable model query.
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function prunable()
{
return static::where('created_at', '<=', now()-> subWeek());
}
}然后运行命令:
php artisan model:prune当然,您可以安排定期运行model:prune artisan命令。
以下是文档的链接:https://laravel.com/docs/8.x/eloquent#pruning-models
https://stackoverflow.com/questions/21350759
复制相似问题