php zf2 select 带有 SQL 函数的 where 子句
php zf2 select where clause with SQL function
我需要比较 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())'));
我迷路了,有什么想法吗?
像这样使用表达式:
$select->where(
array(
new \Zend\Db\Sql\Predicate\Expression("DATE(arrival_date) <= DATE(NOW())")
)
);
不需要?就像你试过的那样。和 ?您的参数将被转义,并且不适用于表达式。只有参数,比如 PHP 日期时间或类似的东西。
使用 2.4.2 测试
我需要比较 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())'));
我迷路了,有什么想法吗?
像这样使用表达式:
$select->where(
array(
new \Zend\Db\Sql\Predicate\Expression("DATE(arrival_date) <= DATE(NOW())")
)
);
不需要?就像你试过的那样。和 ?您的参数将被转义,并且不适用于表达式。只有参数,比如 PHP 日期时间或类似的东西。
使用 2.4.2 测试