在 laravel 中满足特定条件后从数据库中删除行
Delete row from db after certain condition has been meet in laravel
我的 table 有数据 id post_id description and dispose_time
。如果当前时间和日期大于当前时间,我想从数据库中删除数据。
$post = Post::delete()->where('dispose_time' > DATE_SUB(NOW())), INTERVAL 10 MINUTE));
像这样。它给了我错误,我的数据库中的 dispose_time 是时间戳格式,类似于 1555107000
。
任何帮助表示赞赏。
根据您提供的信息,您应该使用 whereRaw
方法,而不是 where
,因为您使用 SQL 作为 where 子句。此外,delete()
应该是最后调用的方法。所以你的代码如下:
Post::whereRaw("`dispose_time` > DATE_SUB(NOW(), INTERVAL 10 MINUTE)")->delete();
由于您使用的是Laravel,它附带了Carbon包,您还可以进行以下操作
Post::whereDate('dispose_time', '>', Carbon\Carbon::now()->addMinutes(-10))->delete();
最后使用 delete 子句,像这样:
Post::where("dispose_time", ">", now()->addMinutes(-10)->toDateTimeString())->delete();
在 laravel 中使用 Carbon 作为时间。
$post = Post::where('dispose_time', '>', Carbon::now())->delete();
我的 table 有数据 id post_id description and dispose_time
。如果当前时间和日期大于当前时间,我想从数据库中删除数据。
$post = Post::delete()->where('dispose_time' > DATE_SUB(NOW())), INTERVAL 10 MINUTE));
像这样。它给了我错误,我的数据库中的 dispose_time 是时间戳格式,类似于 1555107000
。
任何帮助表示赞赏。
根据您提供的信息,您应该使用 whereRaw
方法,而不是 where
,因为您使用 SQL 作为 where 子句。此外,delete()
应该是最后调用的方法。所以你的代码如下:
Post::whereRaw("`dispose_time` > DATE_SUB(NOW(), INTERVAL 10 MINUTE)")->delete();
由于您使用的是Laravel,它附带了Carbon包,您还可以进行以下操作
Post::whereDate('dispose_time', '>', Carbon\Carbon::now()->addMinutes(-10))->delete();
最后使用 delete 子句,像这样:
Post::where("dispose_time", ">", now()->addMinutes(-10)->toDateTimeString())->delete();
在 laravel 中使用 Carbon 作为时间。
$post = Post::where('dispose_time', '>', Carbon::now())->delete();