所以我有一个任务表,它有一个时间字段和一个"分钟"字段.我想只获取基于时间和分钟字段的记录,类似于:

$tasks = Task::whereTime('time', '<=', Carbon::now()->addMinutes(DB::raw('minutes'))->format('H:i'))->get();

假设一项任务在03:00到期,因此时间字段将为03:00.正好在任务到期前30分钟,我想收到通知,所以当当前时间是02:30时.

因此,在本例中,"分钟"字段为30.现在,在获取记录时,我使用了上面的查询.它不起作用,但以下方法起作用:

$tasks = Task::whereTime('time', '<=', Carbon::now()->addMinutes(30)->format('H:i'))->get();

也许有一种更容易/更好的方法来实现这一点,但我只想从数据库中获取要使用的记录,而不想在获取所有记录之后执行多次判断.因此,我的问题是,这是否可以使用eloquent来完成,或者我是否应该只获取所有记录并在循环所有任务后执行一些时间判断?

推荐答案

try 使用WHERRaw,以便您可以自定义查询.

$tasks = Task::whereRaw('TIME(NOW()) >= TIME(SUBTIME(tasks.time, CONCAT("0:",minutes, ":0")))')->get();

ADDTIME是将时间添加到时间/日期时间格式的函数

例如,ADDTIME("00:00:00","00:30:00")使初始时间增加30分钟.我将其包装在time()函数中,以便轻松进行比较. 我还使用了conat函数来创建类似于字符串的时间格式

Read more about ADDTIME

Php相关问答推荐

在不刷新页面的情况下无法使用JQuery更新id

无法添加ProxyClass__setInitialized()上的忽略

PHP Perl正则表达式—URL前面没有等号和可能的单引号或双引号

如果再次调用SESSION_START(),会话.gc-max是否会重新启动?或者它是从第一次创建会话开始计算的?

Yahoo Finance API文件_GET_CONTENTS 429请求太多

使用.htaccess将任何路由重定向到文件

保存PHP条带以备将来使用,不显示用户界面

根据产品类型显示或隐藏WooCommerce管理产品自定义字段

WooCommerce-在选定类别中每消费X个金额即可添加免费礼物

除WooCommerce中的特定国家/地区外,有条件地要求填写邮政编码 checkout 字段

将可编辑的计费自定义字段添加到 WooCommerce 管理单个订单

将自定义保存金额移至 Woocommerce 简单产品中的价格以下

Woocommerce 中为空时隐藏显示变体自定义字段数据

获取 Shopware 6 集合元素的值,PHP

PHP简单地将物品装在盒子里会导致未使用的空间,但还有剩余容量

CodeIgniter 4中嵌套过滤器组不起作用

Laravel的Storage::exists返回false,而file_exists返回true.

Symfony 6 中的入口点 (public/index.php) - 它是如何工作的?

如何使 Wordpress Woocommerce 自定义输入字段成为必填字段

使用 PHP ImageMagick 库将 pdf 文件的前 n 页转换为单个 png 图像文件