【问题标题】:Laravel eloquent recors newer then 5 minutesLaravel 雄辩的记录更新了 5 分钟
【发布时间】:2017-07-21 19:48:14
【问题描述】:

这可能看起来像一个双重帖子,但事实并非如此。 我试图查看用户是否在过去 5 分钟内发布了一个主题,我尝试了数百万个代码来检查,但不知何故我的代码总是计数 1 或更多。

这是我目前的解决方案:

public function allowedToPostTopic() {
    $count = Topic::where([
        ['user_id', '=', $this->id],
        ['created_at', '>', \Carbon\Carbon::now()->subMinutes($this->role->topic_delay)]
    ])->count();

    if ($count == 0)
        return true;

    return false;
}

$this->role->topic_delay = 5 我肯定知道(也用 var_dumb 测试过)

我试图在 ,因为这让我感到困惑,我尝试了很多其他方法,例如:

 NOW() - INTERVAL 5 MINUTE

但这也不起作用:(

我在这里做错了什么?

【问题讨论】:

  • 1 调试提示是简单地获取查询返回的主题,因此将 ->count() 替换为 ->get() 您可以 dd 结果并检查行为。可能存在问题的另一个原因是 Carbon 使用的时区,而不是数据库中的 datetime 使用的时区。
  • @OmisakinOluwatobi 这就是我得到的回报 2017-07-21 20:32:16 - 2017-07-21 20:17:05(左边是主题 created_at,右边是碳日期)是的,现在的碳日期是错误的
  • 我通过在 app/config.php 中填写正确的时间 zon 来解决它,对不起我的愚蠢

标签: php laravel eloquent php-carbon laravel-query-builder


【解决方案1】:

我会建议以下故障排除方法;

  1. 启用查询日志记录,获取查询结果并尝试在您的数据库应用程序中运行它,篡改它直到获得正确的结果

  2. 尝试使用 format 函数将碳作为日期时间戳输出

  3. 验证db中的数据是否正确

  4. 如果所有其他方法都失败,请使用 xdebug 单步执行并使用评估器

我不认为这是在模型上设置日期属性的问题,因为我很确定这已经处理好了,但也可能值得检查模型以确保那里没有任何奇怪的东西.

【讨论】:

  • 这是我返回的内容 2017-07-21 20:32:16 - 2017-07-21 20:17:05 (左边是主题 created_at,右边是碳日期)这意味着碳日期是错误的。
  • 我通过在 app/config.php 中填写正确的时间 zon 来解决它,对不起我的愚蠢
  • 那不是愚蠢,这是你学到的另一件事,拥抱它并期待更多的东西要学习......
猜你喜欢
  • 2020-05-30
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 2018-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
相关资源
最近更新 更多