将数据库中的动态值传递给 Carbon::now()->subMinutes()

Pass dynamic value from database to Carbon::now()->subMinutes()

我在数据库中有一个 minutes 整数列,有什么方法可以使下面的查询在没有额外查询的情况下工作? Laravel 8 如果重要的话。

Contest::latest()->where('created_at','>',  Carbon::now()->subMinutes('minutes')->toDateTimeString())->paginate(4)

;

回复ErrorException: A non-numeric value encountered in file

通过查看文档,我可以看到方法 subMinutes() 接受整数作为参数,而不是字符串。也许先尝试修复那个。当我在本地尝试 Carbon::now()->subMinutes('minutes')->toDateTimeString() 运行 时,我得到了类似的错误:A non-numeric value encountered.

碳的加减法信息can be found here

如果没有额外的查询,您将无法执行此操作。 Carbon 是一个 PHP 库,不能在 SQL 查询中使用。但是 SQL 确实为您需要做的事情提供了本机功能:

Contest::latest()
    ->where('created_at','>', DB::raw('NOW()-INTERVAL minutes MINUTE'))->paginate(4)

如果不使用 MySQL.

,您可能需要将 NOW() 替换为 DBMS 提供的任何内容,这通常应该有效