2010-06-10 60 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行。