次のようなものを作成する必要があります。
select name from table where active = 1 AND (name LIKE 'bla' OR description LIKE 'bla')
最初の部分は簡単です:
$sqlcmd = $db->select()
->from("table", "name")
->where("active = ?", 1)
ここで、トリッキーな部分が来ます。どのようにネストできますか?私はただ書くことができることを知っています
->orWhere("name LIKE ? OR description LIKE ?", "bla")
すべてのパーツを動的に変更する必要があるためです。クエリは、スクリプトが実行されるたびに構築されます。一部の部分は削除され、一部は変更されます。この例では、より広い範囲を検索する必要がある場合があるため、これらの OR を追加する必要があります。 「My Zend Logic」によると、正しい方法は次のようになります。
$sqlcmd = $db->select()
->from("table", "name")
->where("active = ?", 1)
->where(array(
$db->select->where("name LIKE ?", "bla"),
$db->select->orWhere("description LIKE ?", "bla")
))
しかし、それは機能しません(少なくとも、機能したことを覚えていません)。
お願いします。誰かが「どこに」をネストするためのオブジェクト指向の方法を見つけるのを手伝ってくれますか-s