我正在尝试为我的实体设置一个新字段,这是一个布尔数组。我这样定义:
/**
* @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:{}'
确保迁移正确更新列的最佳方法是什么?
答案 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
但我确信有更好的解决方案,因为这个看起来像黑客......