Select Zend Framework 2选择或
有人看到这个问题吗 我试图使用谓词来比较语句中的整数,该语句应该如下所示Select Zend Framework 2选择或,select,zend-framework2,where,Select,Zend Framework2,Where,有人看到这个问题吗 我试图使用谓词来比较语句中的整数,该语句应该如下所示 SELECT * FROM `table` WHERE (cat1=1 OR cat1=2 OR cat2 = 1 OR cat2 = 2); 这就是我所拥有的 $resultSet = $this->select(function (Select $select) { $where = new \Zend\Db\Sql\Where(); $pred_1 = new \Zend\D
SELECT * FROM `table` WHERE (cat1=1 OR cat1=2 OR cat2 = 1 OR cat2 = 2);
这就是我所拥有的
$resultSet = $this->select(function (Select $select) {
$where = new \Zend\Db\Sql\Where();
$pred_1 = new \Zend\Db\Sql\Predicate\Like('cat1', 1);
$pred_2 = new \Zend\Db\Sql\Predicate\Like('cat1', 2);
$pred_3 = new \Zend\Db\Sql\Predicate\Like('cat2', 1);
$pred_4 = new \Zend\Db\Sql\Predicate\Like('cat1', 2);
$where->orPredicate($pred_1)->orPredicate($pred_2)->orPredicate($pred_3)->orPredicate($pred_4);
});
resultSet
是一个对象,但它返回表中的所有结果,不进行筛选查看文档,您将找到所需的一切
Zend将为您完成大部分工作,您只需要提供一个数组
$resultSet = $this->select(function (Select $select) {
$select->where(array(
'cat1 = 1', 'cat1 = 2', 'cat2 = 1', 'cat2 = 2'
), \Zend\Db\Sql\Predicate\PredicateSet::OP_OR);
});
\Zend\Db\Sql\Predicate\PredicateSet::OP\u或
是您案例中的重要部分。$pred\u 4=new\Zend\Db\Sql\Predicate\Like('cat1',2)代码>行具有cat1而不是cat2。这可能是个问题吗?您不需要以某种方式将$where
连接到$select
?比如$select->where->orPredicate(…)
$resultSet = $this->select(function (Select $select) {
$where = new \Zend\Db\Sql\Where();
$pred_1 = new \Zend\Db\Sql\Predicate\Like('cat1', 1);
$pred_2 = new \Zend\Db\Sql\Predicate\Like('cat1', 2);
$pred_3 = new \Zend\Db\Sql\Predicate\Like('cat2', 1);
$pred_4 = new \Zend\Db\Sql\Predicate\Like('cat1', 2);
$where
->orPredicate($pred_1)
->orPredicate($pred_2)
->orPredicate($pred_3)
->orPredicate($pred_4)
;
$select->where($where); // attach to the select object.
});