DQLでカッコつきwhereを書く
こういう感じの条件が書きたかったので色々試してみました。
WHERE (a = ? AND b = ?) AND (c = ? OR d = ?)
$q = Doctrine_Core::getTable('Hoge')->createQuery() ->where('(a = ?', 1) ->addWhere('b = ?)', 1) ->addWhere('(c = ?', 1) ->orWhere('d = ?)', 1); echo $q; // FROM Hoge WHERE (a = ? AND b = ?) AND (c = ? OR d = ?)
一応OKみたい。以下も結果は同じです。
$q = Doctrine_Core::getTable('Hoge')->createQuery() ->where('(a = ?', 1)->addWhere('b = ?)', 1) ->addWhere('(c = ?', 1)->orWhere('d = ?)', 1);
このくらいの記述がわかりやすいかな。
$q = Doctrine_Core::getTable('Hoge')->createQuery() ->where('(a = ? AND b = ?)', array(1, 1)) ->addWhere('(c = ? OR d = ?)', array(1, 1));