我正在为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));
});
还是更好的主意?
答案 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可以通过其他值动态更新。如果有人有其他想法,请分享。