2013-07-04 14 views
2

DATEDIFF查詢我想運行此查詢:如何做一個timeDiff測量或CakePHP的

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)); 
+0

你應該說明你使用的是什麼蛋糕版本。另外:你應該使用虛擬領域。 – mark

回答

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條件,那麼您必須刪除'username' => $v['User']['username']