php zf2多个在哪里

时间:2015-12-28 10:44:27

标签: php sql zend-framework2 where

我前一段时间提出一个问题: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. "'");

我真的很感谢你的帮助,以了解正在发生的事情,以及如何驾驭它。

1 个答案:

答案 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
    ),
));

更多信息http://framework.zend.com/manual/current/en/modules/zend.db.sql.html#zend-db-sql-where-zend-db-sql-having

或者这更简单

$select->where(array(
    'start_date <= ?' => $from,
    'end_date > ?' => $from
));