Zend framework2 或zf2中的何处已消失。如何更换?
由于zf2,在使用Zend\Db的查询中不再可能使用orWhere 我在这里发现()可以替换它。 在我的示例中,没有“like”,只有一个查询,如:Zend framework2 或zf2中的何处已消失。如何更换?,zend-framework2,Zend Framework2,由于zf2,在使用Zend\Db的查询中不再可能使用orWhere 我在这里发现()可以替换它。 在我的示例中,没有“like”,只有一个查询,如: $select->where("....")->orWhere("...") 如果使用PredicateSet是唯一的方法,我如何使用它进行查询?这现在称为orPredicate()请参阅Zend\Db\Sql\Predicate\Predicate.php中的代码 另请参阅有关where()函数的文档,您可以传递第二个参数,该参数定
$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;
}
当然,您可以使用lessThanOrEqualTo、equalTo等谓词,而不是像我使用的那样。您还可以使用和谓词代替或谓词
此外,最好以适当的方式使用名称空间
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)
)
);