Zend Framework: повторно использовать предложение WHERE, возвращаемое из Zend_Db_Select :: getPart () - PullRequest
3 голосов
/ 06 декабря 2010

У меня есть объект SELECT, содержащий WHERE.

Я могу вернуть 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.Есть ли способ получить более полезное представление оператора WHERE из объекта SELECT?

Спасибо

РЕДАКТИРОВАТЬ

Лучшее, что я когда-либо придумал, это

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

1 Ответ

1 голос
/ 06 декабря 2010

Ваш первый выбор, $client->update(...) будет работать, , если getParts пропустит 'И' во второй части предложения where.

Я почти уверен, что ваш единственный выбор -для:

  1. используйте ваш второй вариант (возможно, самый безопасный в зависимости от того, насколько сложны предложения where) -or-
  2. итерируйте через $ where и удалите начальный 'AND',«ИЛИ», которое может существовать.
...