在laravel中遇到某些条件后,从db中删除行

问题描述 投票:0回答:3

我的表有数据id post_id description and dispose_time。如果当前时间和日期大于当前时间,我想从数据库中删除数据。

 $post = Post::delete()->where('dispose_time' > DATE_SUB(NOW())), INTERVAL 10 MINUTE));

这样的事情。它给了我错误,我的数据库中的dispose_time是时间戳格式,就像这个1555107000。任何帮助赞赏。

laravel laravel-5.2 lumen lumen-5.4
3个回答
0
投票

根据您提供的信息,您应该使用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();

0
投票

在laravel中使用碳时间。

$post = Post::where('dispose_time', '>', Carbon::now())->delete();

0
投票

最后使用delete子句,如下所示:

Post::where("dispose_time", ">", now()->addMinutes(-10)->toDateTimeString())->delete();
© www.soinside.com 2019 - 2024. All rights reserved.