ZF2 Zend的\\ Db的插入/更新使用MySQL表达式(Zend的\\ \\ Db的\\的Sq

2019-09-18 11:12发布

通过Zend的\ db和/或TableGateway有什么办法,包括像MySQL表达式NOW()在ZF2(2.0.0beta4)的当前版本插入()/更新()语句?

以下是邮件列表上的相关帖子,虽然它没有得到回答: 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 \表达照看我的尝试:

    $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'),
    );

谢谢,我明白任何输入!

Answer 1:

我不知道,如果他们固定在这个最新的更新,但它是一个专门的错误即使他们说,这是固定的,对我来说它仍然没有修复后的工作。



Answer 2:

Zend_Db_Sql_Expression现在对我的作品。

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


Answer 3:

这对我的作品了。 也许,你的问题是像我这样的。 一串误差转化率为因为我传递给方法的参数是数组的元素,而不是阵列。 检查这一点,并有确保你通过$对象 - >法($阵列)。



Answer 4:

你可以试试:

\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



文章来源: ZF2 Zend\\Db Insert/Update Using Mysql Expression (Zend\\Db\\Sql\\Expression?)