0

我正在为 ZF2 项目制作报告页面。现在我需要生成依赖于过滤器的动态查询(可以是 '=', '>', '>=', '<', '<=', 'IN' )。我正在使用 DB select 闭包来生成 where 语句。但我担心它是否会成为未来几天的瓶颈(通过性能或限制)。

任何机构都可以建议我的方法是否可以或需要生成字符串 where 语句如
->where('A > 12 AND B < 12 AND C IN (1,2,3)')

代替

->where(function(Where $where){
    $where->equalTo('A', 10)->equalTo('B', 12)->IN('C', array(1,2,3));
}); 

还是有更好的主意?

4

1 回答 1

0

我有一个更好的解决方案。我没有使用闭包,而是直接使用 Where Object 之类的东西

$where = new \Zend\Db\Sql\Where();
$where->equalTo('A', 10)->equalTo('B', 12)->IN('C', array(1,2,3));
$sql->select()->where($where);

它更具动态性,因为 $where 可以由其他值动态更新。如果有人有其他想法,请分享。

于 2012-10-29T08:16:00.537 回答