Zend框架:重复使用从Zend_Db_Select::getPart()返回的WHERE子句

3
我有一个 SELECT 对象,其中包含 WHERE 语句。
我可以使用 getPart(Zend_Db_Select::WHERE) 返回 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)));
1个回答

1

你的第一选择,$client->update(...) 可以工作,如果 getParts 从 where 子句的第二部分省略了 'AND'。

我相信你唯一的选择是:

  1. 使用第二个选项(根据 where 子句的复杂程度,这可能是最安全的选择)- 或 -
  2. 迭代 $where 返回并删除可能存在的前导 'AND'、'OR'。

1
+1 感谢 Darryl。我担心会有人这么说。我无法相信没有更优雅的解决方案。 - Jake N

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接