diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ae088bb..5bbeac3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ - Enh #279: Separate column type constants (@Tigrov) - New #280, #291: Realize `ColumnBuilder` class (@Tigrov) - Enh #281: Update according changes in `ColumnSchemaInterface` (@Tigrov) -- New #282, #291, #299: Add `ColumnDefinitionBuilder` class (@Tigrov) +- New #282, #291, #299, #302: Add `ColumnDefinitionBuilder` class (@Tigrov) - Bug #285: Fix `DMLQueryBuilder::insertBatch()` method (@Tigrov) - Enh #283: Refactor `Dsn` class (@Tigrov) - Enh #286: Use constructor to create columns and initialize properties (@Tigrov) diff --git a/src/Column/ColumnDefinitionBuilder.php b/src/Column/ColumnDefinitionBuilder.php index 93384bb2..7228242c 100644 --- a/src/Column/ColumnDefinitionBuilder.php +++ b/src/Column/ColumnDefinitionBuilder.php @@ -5,6 +5,7 @@ namespace Yiisoft\Db\Oracle\Column; use Yiisoft\Db\Constant\ColumnType; +use Yiisoft\Db\Constant\ReferentialAction; use Yiisoft\Db\QueryBuilder\AbstractColumnDefinitionBuilder; use Yiisoft\Db\Schema\Column\ColumnInterface; @@ -51,8 +52,8 @@ public function build(ColumnInterface $column): string protected function buildOnDelete(string $onDelete): string { return match ($onDelete = strtoupper($onDelete)) { - 'CASCADE', - 'SET NULL' => " ON DELETE $onDelete", + ReferentialAction::CASCADE, + ReferentialAction::SET_NULL => " ON DELETE $onDelete", default => '', }; } diff --git a/src/Schema.php b/src/Schema.php index b7a0e7c9..20b2c9e4 100644 --- a/src/Schema.php +++ b/src/Schema.php @@ -7,6 +7,7 @@ use Throwable; use Yiisoft\Db\Cache\SchemaCache; use Yiisoft\Db\Connection\ConnectionInterface; +use Yiisoft\Db\Constant\ReferentialAction; use Yiisoft\Db\Constraint\CheckConstraint; use Yiisoft\Db\Constraint\Constraint; use Yiisoft\Db\Constraint\ForeignKeyConstraint; @@ -58,8 +59,7 @@ * foreign_table_schema: string|null, * foreign_table_name: string|null, * foreign_column_name: string|null, - * on_update: string, - * on_delete: string, + * on_delete: ReferentialAction::*, * check_expr: string * } * > diff --git a/tests/Provider/QueryBuilderProvider.php b/tests/Provider/QueryBuilderProvider.php index 9f4e2290..d46b444f 100644 --- a/tests/Provider/QueryBuilderProvider.php +++ b/tests/Provider/QueryBuilderProvider.php @@ -7,6 +7,7 @@ use Exception; use Yiisoft\Db\Constant\ColumnType; use Yiisoft\Db\Constant\PseudoType; +use Yiisoft\Db\Constant\ReferentialAction; use Yiisoft\Db\Constraint\ForeignKeyConstraint; use Yiisoft\Db\Expression\Expression; use Yiisoft\Db\Oracle\Column\ColumnBuilder; @@ -243,10 +244,12 @@ public static function buildColumnDefinition(): array $referenceRestrict = new ForeignKeyConstraint(); $referenceRestrict->foreignColumnNames(['id']); $referenceRestrict->foreignTableName('ref_table'); - $referenceRestrict->onDelete('restrict'); + $referenceRestrict->onDelete(ReferentialAction::RESTRICT); + $referenceRestrict->onUpdate(ReferentialAction::RESTRICT); $referenceSetNull = clone $referenceRestrict; - $referenceSetNull->onDelete('set null'); + $referenceSetNull->onDelete(ReferentialAction::SET_NULL); + $referenceRestrict->onUpdate(ReferentialAction::SET_NULL); $values = parent::buildColumnDefinition();