我有这样的事情:
$sql = new Sql($this->tableGateway->getAdapter());
$select = $sql->select();
$select
-> from('mytable')
-> join('exp', 'field1_id=field1.id', '*', 'LEFT');
$where = new Where();
$where -> equalTo('field2_id', $field2_id);
$select->where($where);
$statement = $sql->prepareStatementForSqlObject($select);
但如果我想使用“not equalTo”怎么办?怎么做?
答案 0 :(得分:7)
您需要使用notEqualTo
$where->notEqualTo('field2_id', $field2_id);
http://framework.zend.com/apidoc/2.1/classes/Zend.Db.Sql.Predicate.Predicate.html#notEqualTo
答案 1 :(得分:2)
这就是我使用它的方式,我们大多数人可能正在搜索这样的查询字符串,在单个查询中有这样的clasues。
return $details = $this->select(function(Select $select) use ($domain, $domainWithoutWWW){
$select->columns(['dealername'=> 'dealer.name']);
$select->join('template',"dealer.template_id = template.id", ['template_name' => 'name','template_html' => 'html','template_css' => 'css'], 'left');
$select->where($select->where->notEqualTo('dealer.used_car_dealer_id',1826));
$select->where(array('dealer.parent' => 0));
$select->where(new In('domain', ['abc.com', 'xyz.com', 'lmn.com']));
});
答案 2 :(得分:0)
最简单的方法是将条件内联写入:
$select->where('field1 != 0');