programing

원칙이 계산/생성된 열을 삭제하지 않도록 하는 방법

bestcode 2023. 1. 15. 17:06
반응형

원칙이 계산/생성된 열을 삭제하지 않도록 하는 방법

Symfony 프로젝트에 MariaDB를 사용하고 있으며 다음과 같은 계산 열을 설정했습니다.

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

를 사용하여 원칙 이행을 실행할 때bin/console doctrine:schema:update의 어디에도 표시되지 않기 때문에 계산 컬럼이 드롭됩니다.HistoryEvent엔티티 클래스

마이그레이션을 실행할 때 Principle이 계산 열을 삭제하지 않도록 하려면 어떻게 해야 합니까?

이를 OnSchemaColumnDefinition Event를 사용하여 원칙 2.10에서 해결했습니다.내 코드는 다음과 같습니다.

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

언급URL : https://stackoverflow.com/questions/50813814/how-to-prevent-doctrine-from-dropping-computed-generated-column

반응형