ZF2 ZendDb Insert/Update Using Mysql Expression (ZendDbSq


ZF2 ZendDb Insert/Update Using Mysql Expression (ZendDbSqlExpression?)

有没有办法通过Zend''Db和/或TableGateway insert()/update()语句在ZF2(2.0.0beta4)的当前版本中包含像NOW()这样的MySQL表达式?

这是邮件列表中的相关帖子,尽管尚未得到答复: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('Y-m-d H:i:s'),
    );

谢谢,我感谢任何意见!

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