0

複数のwhere()句を使用してselectステートメントを動的に作成することは可能ですか?複数の引数を取る関数を想定します。N番目の引数が空でない場合は、ステートメントに-> where('sth =? "、$ value)句を追加し、すべての引数に対してこれを実行します。

さて、ささいな方法は巨大なスイッチケースを使うことですが、それは間違っていると感じます。where()句が配列を受け入れる場合、それは非常に簡単ですが、今はどうでしょうか?

ありがとう!

4

2 に答える 2

0

私はコメントで、普遍的な WHERE ラッパーを実装するのは簡単な作業ではないことを指摘しました。それが (私が思うに) ZF 開発者が、基本的に SQL 式を使用するより単純な方法を使用することに決めた理由です。配列。

あなたの場合にそのような機能を実装するのは、それほど簡単ではありません。

function whereX(Zend_Db_Select $select, array $args) {
  foreach($args as $argExpression => $argValue) {
    $select->where($argExpression, $argValue);
  }
}

...次に、このようなもので使用します...

whereX($select, array('price < ?' => $minimumPrice, 'price > ?' => $maximumPrice));

ただし、「OR」条件を使用する場合、またはより複雑な句を作成する場合は、その関数を微調整する必要があります。ますます複雑になるにつれて、その単純さは失われます...

それがZend標準パッケージに含まれていない理由だと思います-少なくとも現在は。

于 2012-06-20T20:37:52.670 に答える