2010-06-10 16 views
2

正在尋找如何延長下面的Zend_Db_Table類,以適應之間兩個日期的語法和LIMIT語法擴展Zend的數據庫表之間包含並限制

我現在的結構是

class Model_DbTable_Tablelist extends Zend_Db_Table_Abstract 
{ 
    protected $_name = 'mytable'; 

    $select = $this->select() 
        ->setIntegrityCheck(false) 
        ->from('mytable', 
         array('MyCol1', 'MyDate')); 

} 

我想它擴展爲相當於下面的查詢

SELECT MyCol1,MyDate FROM mytable 
WHERE MyDate BETWEEN '2008-04-03' AND '2009-01-02' 
LIMIT 0,20 

任何想法?

回答

5

關於BETWEEN,在Zend網站上報道了this issue - 它似乎仍然是開放的。提到的解決方法是使用類似

$this->where('MyDate > ?', '2008-04-03')->where('MyDate < ?', '2009-01-02'); 

看起來你可以使用「限制」的方法來LIMIT子句添加到您的SQL,例如

->limit(0, 20); 

分享和享受。

+0

「如果所有參數的類型都是相同的,這相當於表達式(min <= expr AND expr <= max)。」所以在你的查詢中你也需要使用「=」符號! – Andron 2012-04-19 15:21:00

1

$ adapter = $ this-> getAdapter();

$ dt =「datetime between?和?」;
$ dt = $ adapter-> quoteInto($ dt,「04-01-2010」,null,1);
$ dt = $ adapter-> quoteInto($ dt,「05-01-2010」,null,1);
$ this->其中($ dt)

0

請注意 - > limit(0,20)表示對返回行數沒有限制,但跳過前20行。