Doctrine 2.1 - 日期时间列默认值

新手上路,请多包涵

有人可以告诉我如何在 DateTime 列上添加默认值吗?我不能这样做:

 protected $registration_date = date("Y-m-d H:i:s", time());

那么我该如何处理呢?

原文由 Jazi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 488
2 个回答

您将属性映射为 DateTime 类型,然后使用新的 DateTime 实例在构造函数中设置值:

 /**
 * @Entity
 * @Table(name="...")
 */
class MyEntity
{
    /** @Column(type="datetime") */
    protected $registration_date;

    public function __construct()
    {
        $this->registration_date = new DateTime();
    }
}

这可以作为持久类的构造函数在水合时不调用。

原文由 Max 发布,翻译遵循 CC BY-SA 3.0 许可协议

我认为,为 datetime 完成自动填充的最佳方法是这样:

 * @ORM\Column(type="datetime", options={"default"="CURRENT_TIMESTAMP"})

将逻辑放入构造函数不是正确的解决方案,因为设置默认值是 SQL 客户端的责任。如果您决定不再使用 ORM - 您将失去业务逻辑。另外,如果使用构造函数,您将无法将默认时间戳添加到 datetime 现有行 的属性。

原文由 D.Samchuk 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题