我有点问题...... 所以我有一个代码可以从表中获取所有值,
我希望在密码过期时删除或更新表格的值。小于time()函数。
我住在UTC +1时区,但还好......
我想首先更新表格' deleted_at'获取所有数据仍然在数据库中。
那我怎么能这样做呢,
如果我执行删除查询:
$del = DB::table('event')->where('expire', '<', $time)->delete();
它不起作用......
请帮帮我(可能是通过 UPDATE 查询将deleted_at表更新为当前时间戳?
感谢您的帮助!
答案 0 :(得分:2)
问题可能是time()
返回自1970年以来经过的秒数,而不是时间戳。 (我假设你的db列是)
我建议您使用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]);
答案 1 :(得分:1)
感谢lukasgeiter,我找到了正确的解决方案,这就是解决方案:
$del = DB::table('event')->where('expire', '<', $time)->where('deleted_at', 'IS NULL')->update(['deleted_at' => $time]);
$time
变量是time();
函数,因为我想获取时间戳,而不是日期格式。