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

如果getParts 从 where 子句的第二部分省略了“AND” ,那么您的第一选择$client->update(...)会起作用。

我很确定您唯一的选择是:

  1. 使用您的第二个选项(可能最安全,具体取决于 where 子句的复杂程度)-或-
  2. 遍历返回的 $where 并删除可能存在的前导“AND”、“OR”。
于 2010-12-06T15:47:16.950 回答