【发布时间】:2015-11-16 21:41:20
【问题描述】:
我需要比较 DATETIME 中的 DATE 格式。
在 ZF 2.3.5 之前,以下代码运行良好:
$select->where('DATE(arrival_date) <= DATE(NOW())');
$select->where('DATE(departure_date) >= DATE(NOW())');
$select->where('enable = true');
对于 ZF 2.4.2+,它不再工作并产生以下错误:
无法从接口 Zend\Db\Sql\Predicate\PredicateInterface 继承先前继承的或覆盖常量 TYPE_IDENTIFIER
我已经尝试了以下(没有错误)。问题是“arrival_date”是 DATETIME 格式,我只需要与 DATE 进行比较。
$where = new Zend\Db\Sql\Where();
$where->lessThanOrEqualTo('arrival_date', date('Y-m-d'));
$where->greaterThanOrEqualTo('arrival_date', date('Y-m-d'));
$where->equalTo('enable', true);
$select->where($where);
理想情况下,这段代码应该可以工作,但它不能:
$select->where(new Zend\Db\Sql\Predicate\Expression('DATE(arrival_time) <= ?', 'DATE(NOW())'));
我迷路了,你知道吗?
【问题讨论】:
-
为我工作。你确定你已经提到了业务的所有细节吗?
-
我使用的PHP版本可能是:5.3.28
-
适用于 php 5.6
-
尝试使用 $where->addPredicate(new Expression('DATE(arrival_time)
-
您将 \DateTime 对象的时间属性设置为 0。 setTime(0,0,0)
标签: php select zend-framework2 where predicate