ZF2 Zend\Db 使用 Mysql 表达式进行插入/更新 (Zend\Db\Sql\Expression?)

8
有没有办法在当前的 ZF2 构建中(2.0.0beta4)通过 Zend\Db 和/或 TableGateway insert()/update() 语句包含 MySQL 表达式,如 NOW()?
以下是邮件列表中的相关帖子,但尚未得到回答: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'),
    );

谢谢,我感激任何意见!
4个回答

11

Zend_Db_Sql_Expression 现在对我起作用了。

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

您介意在此答案周围添加更多信息吗?谢谢。 - Max

2

我不确定最新更新是否修复了这个问题,但这是一个已知的bug,即使他们说已经修复了,对我来说,在修复后仍然无法工作。


感谢您的回复和链接,我会更新到最新的源代码并查看是否仍然存在。 - Alex Ross
Zend Framework 2.0 beta 6,这个问题还没有解决!?!? - ufk

0

0

我也试过了,它对我有效。也许你的问题和我的一样。字符串转换错误是因为我传递给方法的参数是数组元素而不是整个数组。请检查并确保您正在传递 $object->method($array)。


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