我前一段时间提出一个问题:php zf2 select where clause with SQL function
但我回来了,因为我仍然遇到同样的问题。我可能是“愚蠢的”,但我真的不明白为什么,让我感到沮丧的是无法实现过于简单的SQL查询的目标。
这是我在ZF 2.3.5之前正常工作的初始查询:
$select->where('(("' . $from . '" >= start_date AND "' . $from . '" < end_date ) OR ("' .
$to . '" > start_date AND "' . $to . '" <= end_date ) OR ("' .
$from . '" < start_date AND "' . $to . '" > start_date ))');
使用ZF 2.4.9,我得到以下内容:
无法从接口Zend \ Db \ Sql \ Predicate \ PredicateInterface继承先前继承或覆盖常量TYPE_IDENTIFIER
我已经尝试了所有我能做的事情,甚至还有一个非常小而简单的条款。它仍然给我上述错误:
$select->where(array(new Zend\Db\Sql\Predicate\Expression("start_date <= $from")));
$select->where("start_date <= $from");
$select->where("`start_date` <= $from");
$select->where("`s`.`start_date` <= $from");
$select->where("`s`.`start_date` <= " . $from);
$select->where("`s`.`start_date` <= '" . $from. "'");
我真的很感谢你的帮助,以了解正在发生的事情,以及如何驾驭它。
答案 0 :(得分:0)
$select = new Select();
$select->where->addPredicates(array(
new Predicate\Operator(
'start_date',
Predicate\Operator::OP_LTE,
$from
),
new Predicate\Operator(
'end_date',
Predicate\Operator::OP_GT,
$from
),
));
或者这更简单
$select->where(array(
'start_date <= ?' => $from,
'end_date > ?' => $from
));