我有一个小问题。。。所以我有一个代码,可以从一个表中获取所有值,
当callumn'expire'小于time()函数时,我想删除或更新表的值。
我住在UTC+1时区,但还好。。。
我想首先更新表"deleted_at",以获取仍在数据库中的所有数据。
那么我该怎么做呢,
如果我执行删除查询:
$del = DB::table('event')->where('expire', '<', $time)->delete();
它不起作用。。。
请帮助我(可能通过进行UPDATE查询将deleted_at表更新为当前时间戳?
谢谢你的帮助!
问题可能是time()
返回自1970年以来的秒数,而不是时间戳。(我假设你的数据库栏是)
我建议你使用Carbon
(Laravel使用的日期库)
$now = Carbon::now();
$del = DB::table('event')->where('expired', '<', $now)->delete();
或软删除:
$now = Carbon::now();
$del = DB::table('event')->where('expired', '<', $now)->whereNull('deleted_at')->update(['deleted_at' => $now]);
多亏了lukasgeiter,我找到了正确的解决方案,这就是解决方案:
$del = DB::table('event')->where('expire', '<', $time)->where('deleted_at', 'IS NULL')->update(['deleted_at' => $time]);
$time
变量是time();
函数,因为我想要的是时间戳,而不是日期格式。