0

我有以下查询,用于按汽车型号和类别名称搜索表格

SELECT * FROM CARS as car 
LEFT JOIN CATEGORIES as cat 
ON cat.car_id = car.car_id 
WHERE (car.model_no LIKE '%GT V8%') OR (cat.name LIKE '%GT V8%')

我正在使用 zend 框架,所以到目前为止我的模型中有这样的查询

$sql = $this->select()->setIntegrityCheck(false)
            ->from(array('car'=>$this->_name), array())
            ->joinLeft(array('cat'=>'categories'), 'cat.car_id=car.car_id', array())

然后在 where 子句中

我喜欢这个

$sql->where('car.model_no LIKE ?', '%'.$query['search'].'%')
    ->where('cat.name LIKE ?', '%'.$query['search'].'%')

但是那个输出就像

WHERE (car.model_no LIKE '%GT V8%') AND (cat.name LIKE '%GT V8%')

我只是找不到用 OR 替换 AND 的方法。在 zend_db 中有没有办法做到这一点?

4

1 回答 1

1

使用orWhere(示例 #19)

$sql->where('car.model_no LIKE ?', '%'.$query['search'].'%')->orWhere('cat.name LIKE ?', '%'.$query['search'].'%')

从文档:

如果您需要使用 OR 将术语组合在一起,请使用 orWhere() 方法。此方法的使用方式与 where() 方法相同,只是指定的术语前面是 OR,而不是 AND。

于 2013-07-24T05:03:13.970 回答