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%')

AND を OR に置き換える方法が見つかりません。とにかく 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() メソッドと同じように使用されますが、指定された用語の前に AND ではなく OR が付く点が異なります。

于 2013-07-24T05:03:13.970 に答える