如何防止原则删除计算/生成的列



我使用MariaDB进行Symfony项目,并设置了一个计算列:

ALTER TABLE history_event ADD quote_status_change SMALLINT AS (JSON_VALUE(payload, '$.change_set.status[1]'));

当我使用bin/console doctrine:schema:update运行 Doctrine 迁移时,计算列被删除,可能是因为它没有出现在HistoryEvent实体类中的任何位置。

如何防止 Doctrine 在运行迁移时删除计算列?

我在教义 2.10 中使用 OnSchemaColumnDefinition Event 解决了这个问题。 我的代码看起来像这样:

public function onSchemaColumnDefinition(SchemaColumnDefinitionEventArgs $eventArgs)
{
if ($eventArgs->getTable() === 'my_table') {
if (!in_array($eventArgs->getTableColumn()['field'], ['id', 'column_1', 'column_2'])) {
$eventArgs->preventDefault();
}
}
}

就我而言,我使用的是Symfony 4.2,所以我按照每个设置了事件侦听器类。

恐怕你可能不走运,有一个开放的功能请求,但尚未实现:https://github.com/doctrine/doctrine2/issues/6434

相关内容

  • 没有找到相关文章

最新更新