2

我想运行这个查询:

SELECT * FROM `foobar`
where
TIMESTAMPDIFF(MINUTE,request_time,NOW()) < 15

我努力了:

$this->find('first',
                array('conditions' => 
                   array('username' => $v['User']['username']),
                   'TIMESTAMPDIFF(MINUTE,request_time,NOW()) < ' => 15));
4

1 回答 1

3

您必须将 SQL 片段放在conditions数组内,目前它放在外面,因此它被忽略了。

$this->find('first', array
(
    'conditions' => array
    (
        'username' => $v['User']['username'],
        // this is where it needs to go
        'TIMESTAMPDIFF(MINUTE, request_time, NOW()) < ' => 15
    )
    // this is where it was before
));

这将导致类似于以下的查询:

SELECT
    `Model`.`username`, ...
FROM
    `db`.`model` AS `Model`
WHERE
    `username` = 'whatever'
    AND
    TIMESTAMPDIFF(MINUTE, request_time, NOW()) < 15
LIMIT 1

默认情况下,CakePHP 将包含SELECT语句中的所有字段。

显然,如果您希望查询仅使用TIMESTAMPDIFF示例中的条件,那么您必须 drop 'username' => $v['User']['username']

于 2013-07-04T12:16:38.770 回答