ZF2 Zend \ Db Вставка / обновление с использованием выражения Mysql (Zend \ Db \ Sql \ Expression?)

Есть ли способ включить выражения MySQL, такие как NOW () в текущую сборку ZF2 (2.0.0beta4), посредством операторов Zend \ Db и / или TableGateway insert () / update ()?

Вот связанный пост в списке рассылки, хотя на него не ответили: http://zend-framework-community.634137.n4.nabble.com/Zend-Db-Expr-and-Transactions-in-ZF2- Db-td4472944.html

Похоже, что ZF1 использовал что-то вроде:

$data = array( 'update_time' => new \Zend\Db\Expr("NOW()") ); 

И после просмотра Zend \ Db \ Sql \ Expression я попытался:

  $data = array( 'update_time' => new \Zend\Db\Sql\Expression("NOW()"), ); 

Но получите следующую ошибку:

 Catchable fatal error: Object of class Zend\Db\Sql\Expression could not be converted to string in /var/www/vendor/ZF2/library/Zend/Db/Adapter/Driver/Pdo/Statement.php on line 256 

Как рекомендуется здесь: http://zend-framework-community.634137.n4.nabble.com/ZF2-beta3-Zend-Db-Sql-Insert-new-Expression-now-td4536197.html Я сейчас просто устанавливаю дата с PHP-кодом, но я предпочел бы использовать сервер MySQL как единственный источник истины для даты / времени.

  $data = array( 'update_time' => date('Ymd H:i:s'), ); 

Спасибо, я ценю любой вход!

Related of "ZF2 Zend \ Db Вставка / обновление с использованием выражения Mysql (Zend \ Db \ Sql \ Expression?)"

Я не уверен, исправили ли они это в последних обновлениях, но это была ошибка с ошибкой, и даже если они сказали, что она исправлена, для меня это все еще не работает после исправления.

Zend_Db_Sql_Expression работает для меня сейчас.

 $data = array( 'update_time' => new \Zend\Db\Sql\Expression("NOW()"), ); 

Это работает и для меня. Возможно, ваша проблема была похожа на мою. Преобразование строковой ошибки состояло в том, что параметр, который я передал методу, был элементом массива, а не массивом. Проверьте это и убедитесь, что вы передаете метод $ object-> ($ array).

Можешь попробовать:

 \Zend\Db\Sql\Predicate\Literal(); //or \Zend\Db\Sql\Literal(); ------------------------------------ $data = array( 'update_time' => new \Zend\Db\Sql\Literal("NOW()"), ); 

https://framework.zend.com/manual/2.2/en/modules/zend.db.sql.html#literal-literal