【问题标题】:PHP Doctrine: How to preserve tables default values on insert / updatePHP Doctrine:如何在插入/更新时保留表默认值
【发布时间】:2013-12-02 14:40:25
【问题描述】:

我有一个表,其中包含某些列的默认值,即。 e. **creationDate** 列包含记录的创建日期,因此只能在初始创建时设置,而不应在更新记录时设置。
我很想让 mysql 设置创建日期,但是当插入一条带有原则的记录时,即使我在实体类中没有 getter 或 setter,这个值也会被 NULL 覆盖。防止这种情况的唯一方法是同时删除相应的(受保护的)属性。但如果我这样做,我根本无法访问 **creationDate** 字段的值。

如果我让 php 创建当前日期并将其用作默认日期,它也会在更新时设置为当前时间戳。所以它更像是一个 updateDate 而不是 creationDate

如何在创建插入/更新 sql 时省略这些类型的字段而不删除实体类中的属性?

如果有任何建议,将不胜感激。

【问题讨论】:

    标签: php symfony orm doctrine


    【解决方案1】:

    __construct 中设置creationDate。这样,当您更新实体时,它就不会更新。

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

    更新(使用 Connection 的原始 SQL)

    Question I answered that uses Raw SQL via Connection

    【讨论】:

    • 谢谢。这有助于创建日期。不幸的是,它不能解决存储在数据库中的默认值的问题,并且不应该从我必须构建的应用程序中设置。我希望有某种注释或类似的东西来防止特定属性被填充到数据库中。
    • 不,恐怕不是那样的。您是否尝试过使用Connection 接口编写原始 SQL?
    • 我已经添加了一个关于使用原始 SQL 的答案的链接......也许你会发现它很有用......
    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 2012-02-05
    • 2013-08-17
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    相关资源
    最近更新 更多