【问题标题】:Symfony2, Doctrine, persist with predefined valueSymfony2,Doctrine,坚持预定义的值
【发布时间】:2014-06-11 18:41:45
【问题描述】:

有没有一种简单的方法来持久化所有值 = 0 的实体?我的实体有大量的行...为该数量的行键入 ->setBlabla(0)..puh..

有没有“更简单”的方法?

问候

【问题讨论】:

  • 你能提供使用你做了什么吗?获取存储库并创建更新查询可能是一种简单的方法
  • Default value in Doctrine的可能重复
  • 嗯,它是一个有 226 列的实体。获取器/设置器。我想为每一列预定义一个值。如果我坚持一个新行,那么每一列的值都必须为 0。手工写下来......我猜我听起来很懒,但我觉得有办法解决它。
  • 是的,对不起。谢谢沃特!
  • 嗯,我设置了 options={"default"= 0},当我通过 mysql 插入一行时它工作正常,但是当我通过教义/em 持久化一个新行时,它会显示“空”而不是“0”。有什么想法吗?

标签: symfony doctrine persist


【解决方案1】:

教义文档建议通过实体属性定义默认值:

class User
{
    const STATUS_DISABLED = 0;
    const STATUS_ENABLED = 1;

    private $status = self:STATUS_DISABLED;
}

见常见问题解答http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/faq.html#how-can-i-add-default-values-to-a-column

我希望在实体类构造函数中设置所有属性的默认值:

class User
{
    const STATUS_DISABLED = 0;
    const STATUS_ENABLED = 1;

    private $status;

    public function __construct()
    {
        $this->status = self::STATUS_DISABLED;
    }

}

【讨论】:

    【解决方案2】:

    您可以为每个字段设置一个默认值,并使用nullable=false强制其插入默认值;像这样

    @ORM\Column(name="column_name", type="integer", nullable=false, options={"default" = 0})
    

    或者您可以创建一个服务prePresist 以在persist 被触发之前将“0”值设置为空字段。看看
    Doctirn2 Lifecycle Events
    Symfony2 Event Listener

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多