3

WHEREを含むSELECTオブジェクトがあります。

を使用してWHEREを返すことができgetPart(Zend_Db_Select::WHERE)ます。これにより、次のようになります。

array
    0 => string "(clienttype = 'agent')"
    1 => string "AND (nextpayment < (NOW() - INTERVAL 1 DAY))"

私はそれでこれを行うことができないので、この配列はかなり役に立たないようです

$client->update(array("paymentstatus" => "lapsed"), $where);

または、別のSELECTオブジェクトに配置することもできます。SELECTオブジェクトからWHEREステートメントのより有用な表現を取得する方法はありますか?

ありがとう

編集

私がこれまでに思いついた最高のものは

$where = new Zend_Db_Expr(implode(" ", $select->getPart(Zend_Db_Select::WHERE)));
4

1 に答える 1

1

最初の選択は、$client->update(...)getPartsが where 句の 2 番目の部分から「AND」を省略した場合に機能します。

あなたの唯一の選択肢は次のとおりだと確信しています。

  1. 2 番目のオプションを使用します (where 句の複雑さに応じて、おそらく最も安全です) - または -
  2. 返された $where を反復処理し、存在する可能性がある先頭の「AND」、「OR」を削除します。
于 2010-12-06T15:47:16.950 に答える