Как предотвратить Doctrine от удаления вычисляемого / сгенерированного столбца - PullRequest
0 голосов
/ 12 июня 2018

Я использую MariaDB для проекта Symfony и настроил вычисляемый столбец с помощью:

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

Когда я запускаю миграции Doctrine с bin/console doctrine:schema:update, вычисляемый столбец удаляется, возможно, потому, что он не появляетсягде-нибудь в классе сущностей HistoryEvent.

Как я могу запретить Doctrine отбрасывать вычисляемые столбцы при выполнении миграций?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Я решил это в доктрине 2.10 с помощью события OnSchemaColumnDefinition .Мой код выглядел примерно так:

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, поэтому я установил класс прослушивателя событий согласно .

0 голосов
/ 20 июня 2018

Боюсь, вам может не повезти, есть запрос на открытую функцию, но он еще не реализован: https://github.com/doctrine/doctrine2/issues/6434

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...