如何在CakePHP 3.x中使用INTERVAL

时间:2016-11-22 18:09:04

标签: cakephp intervals cakephp-3.x

我正在使用CakePHP 3.x.我已使用$this->loadModel('Users'); $userList = $this->Users->find('all') ->select(['created']) ->where(['status' => 1,'created' => 'created + INTERVAL 14 DAY > NOW()']); 将所有日期转换并存储到字符串。在数据库中,它将存储如下 1479466560 但是现在我需要从14天前选择行。我试过以下条件,

{{1}}

它只返回空行。这该怎么做 ?。任何人都可以帮助我!

2 个答案:

答案 0 :(得分:1)

我知道这并没有告诉你如何使用interval,但确实解决了这个问题。

我过去所做的是一个简单的>= <组合以及php变量:

$cur_date = date_create();
$date = clone $cur_date;
$date->modify("-12 hours");

$this->Model->find()
    ->where(['created >= ' => $date])
    ->andWhere(['created < '=> $cur_date]);

这有效地使用了间隔。它也可以很好地动态编辑。

答案 1 :(得分:0)

您的查询与created表中的任何users日期都不匹配。

在SQL下面生成的CakePHP3查询:

SELECT created FROM users WHERE (status = 1 AND created = created + INTERVAL 14 DAY > NOW())
  

注意:首先尝试从phpmyadmin调整以上查询。

您可以尝试使用以下SQL进行INTERVAL测试

SELECT '2016-01-17 10:57:21' + INTERVAL 14 DAY > NOW();

SELECT '2016-01-17 10:57:21' + INTERVAL 14 DAY;
  

注意:根据需要调整日期字符串。现在你可以看到你所做的wrong是什么