Zend framework2 或zf2中的何处已消失。如何更换?

Zend framework2 或zf2中的何处已消失。如何更换?,zend-framework2,Zend Framework2,由于zf2,在使用Zend\Db的查询中不再可能使用orWhere 我在这里发现()可以替换它。 在我的示例中,没有“like”,只有一个查询,如: $select->where("....")->orWhere("...") 如果使用PredicateSet是唯一的方法,我如何使用它进行查询?这现在称为orPredicate()请参阅Zend\Db\Sql\Predicate\Predicate.php中的代码 另请参阅有关where()函数的文档,您可以传递第二个参数,该参数定

由于zf2,在使用Zend\Db的查询中不再可能使用orWhere 我在这里发现()可以替换它。 在我的示例中,没有“like”,只有一个查询,如:

$select->where("....")->orWhere("...")

如果使用PredicateSet是唯一的方法,我如何使用它进行查询?

这现在称为
orPredicate()
请参阅
Zend\Db\Sql\Predicate\Predicate.php中的代码


另请参阅有关
where()
函数的文档,您可以传递第二个参数,该参数定义

的组合。最简单的方法是使用fluent表示法:

$where = new Zend\Db\Sql\Where;
$where->OR->equalTo('id', $id);

如果有疑问,请查看Ralph在其Zend_Db-examples存储库()中发布的示例。

可以对Where()使用或预测,如下所示:

public function fetchLike($keyword)
{
    $where = new \Zend\Db\Sql\Where();
    $pred_url      = new \Zend\Db\Sql\Predicate\Like('url', '%' . $keyword . '%');
    $pred_notes    = new \Zend\Db\Sql\Predicate\Like('notes', '%' . $keyword . '%');
    $pred_username = new \Zend\Db\Sql\Predicate\Like('username', '%' . $keyword . '%');
    $where->orPredicate($pred_url)->orPredicate($pred_notes)->orPredicate($pred_username);

    $resultSet = $this->tableGateway->select($where);

    return $resultSet;
}
当然,您可以使用lessThanOrEqualToequalTo等谓词,而不是像我使用的那样。您还可以使用和谓词代替或谓词

此外,最好以适当的方式使用名称空间

use \Zend\Db\Sql\Predicate\Like;
use \Zend\Db\Sql\Where;
// Now you can use code like this:
$pred_url      = new Like('url', '%' . $keyword . '%');
// Instead of
$pred_url      = new \Zend\Db\Sql\Predicate\Like('url', '%' . $keyword . '%');

例如,如果您不使用LIKE,可以按如下方式执行(我自己也一直在寻找解决方案):

谢谢,我在PredicateSet.php中找到了orPredicate()函数,但我不知道如何使用它。我在Predicate.php中找不到任何可以使用的信息(这似乎是针对like()、equalTo()等函数的,但找不到简单的orWhere)。
    $select->where(
        array(
            new \Zend\Db\Sql\Predicate\PredicateSet(array(
                new \Zend\Db\Sql\Predicate\Operator('first_column', \Zend\Db\Sql\Predicate\Operator::OPERATOR_EQUAL_TO, $some_value),
                new \Zend\Db\Sql\Predicate\Operator('second_column', \Zend\Db\Sql\Predicate\Operator::OPERATOR_EQUAL_TO, $some_value)
                /* even more columns to compare this way... */
            ), 
            \Zend\Db\Sql\Predicate\PredicateSet::COMBINED_BY_OR)
        )
    );