当前位置: 首页 > 面试题库 >

Laravel选择5分钟以上的记录?

乜建柏
2023-03-14
问题内容

我有Laravel应用程序,我每3秒钟定期检查一次用户的心跳登录状态(演示目的,实际上是5分钟)。对于每个节拍,我都会检查用户在当前时间的上一次活动是否也为5分钟。如果是这样,请注销它们。

这是我的代码:

$result = DB::table('db_user')->where('id_user','=',Session::get('id_user'))->where('last_activity','>=',"now() - interval 5 minute")->get();

    if(!empty($result)) 
        return Redirect::to('/logout');
    else
        return Response::json('still-alive');

我的问题是,这行不通。如果我将操作数更改为<=,它将在5分钟前立即注销我,如果操作数为>=,即使5分钟后它也不会注销我,有人可以解释为什么吗?

-编辑-

感谢您提供所有答案,我通过将代码修改为以下方式解决了我的问题:

$result = DB::table('db_user')->where('id_user','=',Session::get('id_user'))->first();

    if(!empty($result)) 
        if(strtotime($result->last_activity) < strtotime("-5 minutes"))
            return Redirect::to('/logout');
        else 
            return Response::json('still-alive');
    else
        return Response::json('no-record');

问题答案:

假设您的业务逻辑正确,请尝试在where子句中使用PHP而不是SQL字符串:

$date = new DateTime;
$date->modify('-5 minutes');
$formatted_date = $date->format('Y-m-d H:i:s');

$result = DB::table('db_user')->where('id_user','=',Session::get('id_user'))->where('last_activity','>=',$formatted_date)->get();

另外,最好始终输出执行的SQL查询,以确保Laravel的行为符合预期,这是一个好习惯:

$queries = DB::getQueryLog();


 类似资料:
  • 问题内容: 我有一个小问题。我有这样格式的PostgreSQL表 我想按5分钟的时间对它们进行分组,并将该组的平均值作为一个单一值,因此将有20%的记录,每条记录平均包含〜5个数字,而时间设置为中的第一个时间值群组。我不知道如何在PgSQL中执行此操作。因此结果将是: 问题答案: 解释 子查询每5分钟从表中的最小值“到最大值”产生一行记录。 以5分钟为间隔将LEFT JOIN返回表切片数据。仔细

  • 问题内容: 我有一个天气数据库,它大约每70秒获取一次数据集(取决于气象站何时发送数据)。 我想使用Pchart绘制图形,但是我有太多样本,所以X轴被拧紧了。 所以我想要大约每5分钟一次的数据。(或每30分钟) 我当前有的查询是这样的: 这样可以获取最近24小时的样本,但数量太多。 问题答案: 以下内容将为您提供一个示例,该示例包含时间戳记为:00,:05,:10 …的任何数据。 我正在使用取模函

  • 因此,我一直在Android Studio中开发一个简单的应用程序,从过去几天开始,每当我点击“运行”,就需要5分钟以上的时间来构建。以前可没这么慢。我不知道为什么。它说“Gradle构建运行”,然后应用程序在5分钟后加载。这种情况发生在模拟器和我的android设备上。我的年级版本是2.10,我查了这个问题,我尝试了其他类似帖子建议的一切,包括: 向命令行选项设置添加--并行和--脱机 在分级设

  • 问题内容: Iam试图弄清楚数据是在大约5分钟内保存到数据库的。 是Unix时间戳(1970年以来的毫秒)。 不起作用,我得到null而不是0,如果我使用 要执行操作,代码不会进入循环。 我也试过了 问题答案: Current_timestamp以SQL TIMESTAMP(而不是UNIX时间戳)的形式返回当前日期,因此您必须使用unix_timestamp函数进行转换: 编辑: 由于您的列中包含

  • 虽然标准的 Python/Numpy 的选择和设置表达式都能够直接派上用场,但是作为工程使用的代码,我们推荐使用经过优化的 pandas 数据访问方式: .at, .iat, .loc, .iloc 和 .ix。详情请参阅索引和选取数据 和 多重索引/高级索引。 获取 1、 选择一个单独的列,这将会返回一个Series,等同于df.A: In [23]: df['A'] Out[23]: 2013

  • 问题内容: 我有要求在5分钟内运行一会儿循环。我寻找了计时器api,但找不到这样做。任何人都可以为此提供代码摘要。 谢谢 问题答案: 最简单的方法是只检查每次迭代已花费了多少时间。例: 这将运行循环,直到超过5分钟为止。 笔记: 当前循环迭代将始终完成,因此在实践中它将始终运行5分钟以上。 对于此应用程序而言,它比之更合适,因为如果调整了计算机的系统时钟,后者将发生变化,从而使计算工作中断。 感谢