DB Closure函数用于动态选择查询与性能

时间:2012-10-29 05:28:22

标签: closures zend-framework2

我正在为ZF2项目的报告页面工作。现在我需要根据过滤器生成动态查询(可以是'=','>','> =','<','< =','IN')。我正在使用DB select闭包来生成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));
}); 

还是更好的主意?

1 个答案:

答案 0 :(得分: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可以通过其他值动态更新。如果有人有其他想法,请分享。