如何在Zend Framework中编写包含IN()的查询语句?
解决TableGateway中IN和不等于条件的SQL查询问题
嘿,我明白你现在的需求啦!你已经能处理等于条件的查询,现在要实现IN()和!=的条件,其实TableGateway的查询构建器提供了很直观的方法来搞定这些。
方法一:使用链式调用的条件方法
这种方式可读性更强,代码逻辑也更清晰:
$sqlSelect = $this->tableGateway->getSql()->select(); // 添加IN条件:locid IN (4,5) $sqlSelect->where->in('locid', [4, 5]); // 添加不等于条件:lctype != 3 $sqlSelect->where->notEqualTo('lctype', 3);
方法二:使用数组形式定义条件
如果你习惯用数组统一管理查询条件,也可以这样写:
$sqlSelect = $this->tableGateway->getSql()->select(); $sqlSelect->where([ 'locid' => [4, 5], // 传入数组会自动解析为IN条件 'lctype != ?' => 3 // 通过SQL表达式直接实现不等于逻辑 ]);
两种方法最终都会生成你需要的目标SQL语句:SELECT * FROM tbl_location_manager WHERE locid IN (4,5) AND lctype!=3,你可以根据自己的编码习惯选择使用哪种方式。
内容的提问来源于stack exchange,提问作者Ranjan Kumar
相关产品推荐
相关产品推荐

