cakephp之间的条款3

时间:2016-07-08 08:29:44

标签: php mysql cakephp-3.0 query-builder between

select * from user where HOUR(NOW()) BETWEEN earliest_login AND latest_login

earliest_loginlatest_login是两列。

请告诉我如何在cakephp3

中写这个 我试过的代码是:

$query->where(
    [
        function($exp) {
            return $exp->between('HOUR(NOW())', 'earliest_login', 'latest_login');
        }

它不起作用。

如果有人有解决方案,请告诉我。

1 个答案:

答案 0 :(得分:2)

字段名称用于表达式,SQL片段不应包含不受信任的内容。

您可以使用:

$query = $users->find()
->where(function ($exp, $q) {
    return $exp->between('Users.created', date1, date2);
})

这将创建类似于类似的SQL:

select * from users  WHERE created BETWEEN '$date1' AND '$date2'

您还可以在查询中使用gt()和lt()

$query = $articles->find()
    ->where(function ($exp) {
   return $exp
        ->gt('created', '2016-07-05 12:02:15')
        ->lt('created', '2016-07-10 12:02:15');
});

如果想要两个日期之间存在差异

$query = $this->Users->find();

$diff= $query->func()->dateDiff(['2016-07-04 12:02:15', '2016-07-07 18:29:57']);

$query->select(['difference' => $diff,]);

如需更多信息,请阅读此链接 http://book.cakephp.org/3.0/en/orm/query-builder.html