我对Laravel还是个新手,所以请原谅我要问一些很明显的问题。
我有一个使用Eloquent迭代的数据库,我需要删除数据库中超过30天的所有内容,我显然做错了什么。
$dataArr = Data::orderBy('created_at', 'asc');
foreach($dataArr as $data){
if($data['created_at'] < strtotime('-30 days')){
$data->delete();
}else{
break;
}
}
代码似乎根本没有进入循环,我也不太明白如何完成这个任务
现在,$dataarr
是查询构建器,而不是结果,因为您从不使用->get()
。
$dataArr = Data::orderBy('created_at', 'asc')->get(); // now contains all of the records
然而,有一种更简单的方法可以删除记录,而无需逐个检查。
DB::table('data_table')
->where('created_at', '<',
Carbon::now()->subDays(30)->toDateTimeString())
->delete();