迁移的默认数组值

时间:2015-09-13 15:12:31

标签: php arrays symfony

我正在尝试为我的实体设置一个新字段,这是一个布尔数组。我这样定义:

/**
 * @var bool[] $groupe_jours Selected days for the groups
 * @ORM\Column(type="array")
 */
protected $groupe_jours;

我在构造函数中添加了初始化:

  /** @ignore */
public function __construct()
{
    $this->groupe_jours = array();
}

现在我想进行迁移

php app/console doctrine:migrations:diff
php app/console doctrine:migrations:migrate

这会正确更新数据库:

ALTER TABLE licensee ADD groupe_jours LONGTEXT NOT NULL COMMENT '(DC2Type:array)'

然而,当我尝试重新加载我的页面时,我收到如下错误:

  

无法转换数据库值""到Doctrine Type数组

这是因为当数组为空时,数组类型需要特定的字符串,例如:'a:0:{}'

确保迁移正确更新列的最佳方法是什么?

  1. 我可以指定迁移的默认值
  2. 我可以在字段定义中放置一个默认值,迁移应该使用吗?
  3. 我应该手动更新数据库吗?

1 个答案:

答案 0 :(得分:2)

我找到了答案,但我确信有更好的答案。

在创建的迁移文件中,在函数BREAK-POINT ... AT NEXT APPLICATION STATEMENT中,在:

之后
public function up(Schema $schema)

我补充说:

    $this->addSql('ALTER TABLE licensee ADD groupe_jours LONGTEXT NOT NULL COMMENT \'(DC2Typ

但我确信有更好的解决方案,因为这个看起来像黑客......