【问题标题】:Zend Framework 2 - Doctrine 2 - Install and use GedmoZend Framework 2 - Doctrine 2 - 安装和使用 Gedmo
【发布时间】:2013-01-02 18:31:43
【问题描述】:

我发现了 Gidmo 扩展,它提供了一个用于创建和更新对象的时间戳功能。

这就是我(奇怪的是 Zend 中没有其他人)需要的东西!

我尝试通过use 包含命名空间,就像显示here 一样。但没有成功。 Doctrine 验证在其他地方返回有效且没有错误,但在创建新对象时,created_at 属性为空。

我也尝试了this approach,但结果相同。

任何想法我做错了什么?

composer.json:

"require": {
    ...
    "gedmo/doctrine-extensions": "dev-master"

Entity.php:

use Gedmo\Mapping\Annotation as Gedmo;
...

class Entity {   

/**
 * @ORM\Column(type="datetime")
 * @Gedmo\Timestampable(on="create")
 * @Form\Attributes({"type":"timestamp"})
 * @Form\Options({"label":"Created at"})
 * @Form\Exclude()
 *
 */
protected $created_at;

}

【问题讨论】:

    标签: php doctrine-orm timestamp zend-framework2 zend-db


    【解决方案1】:

    我不知道您是否真的需要扩展来实现您正在寻找的功能,请查看本节中讨论的@Version 注释:Doctrine 文档的Optimistic Locking

    [编辑] @Version 在命名空间Doctrine\ORM\Mapping 下可用(以及所有 Doctrine ORM 映射注释)

    时间戳字段的用法:@Version @ORM\Column(type="datetime")

    整数字段的用法:@Version @Column(type="integer")

    但是,版本号(不是时间戳)应该是首选,因为它们在高度并发的环境中不会潜在地发生冲突,这与时间戳不同,这取决于特定数据库平台上时间戳的分辨率。 (来源:教义文献)

    【讨论】:

    • 看起来不错,但不幸的是我找不到如何包含@version...use 语句是什么样的?
    • 您可以使用:use Doctrine\ORM\Mapping\Version;,然后使用注释@Version,或者如果您已经有use Doctrine\ORM\Mapping as ORM,请通过@ORM\Version调用注释
    • 酷,似乎有效:@Version @ORM\Column(type="datetime")... 您可以将此行放在您的答案中,以便更快地帮助其他人,您怎么看?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多