@@ -27,8 +27,8 @@ final class MigrationRecordBuilder
2727 public const ADD_UNIQUE = MigrationRecordBuilder::INDENT . "\$this->createIndex('%s', '%s', '%s', true); " ;
2828 public const ADD_INDEX = MigrationRecordBuilder::INDENT . "\$this->createIndex('%s', '%s', '%s', %s); " ;
2929 public const DROP_COLUMN = MigrationRecordBuilder::INDENT . "\$this->dropColumn('%s', '%s'); " ;
30- public const ADD_ENUM = MigrationRecordBuilder::INDENT . "\$this->execute('CREATE TYPE enum_%s AS ENUM(%s)'); " ;
31- public const DROP_ENUM = MigrationRecordBuilder::INDENT . "\$this->execute('DROP TYPE enum_%s '); " ;
30+ public const ADD_ENUM = MigrationRecordBuilder::INDENT . "\$this->execute('CREATE TYPE \" enum_%s_%s \" AS ENUM(%s)'); " ;
31+ public const DROP_ENUM = MigrationRecordBuilder::INDENT . "\$this->execute('DROP TYPE \" enum_%s_%s \" '); " ;
3232 public const DROP_TABLE = MigrationRecordBuilder::INDENT . "\$this->dropTable('%s'); " ;
3333 public const ADD_FK = MigrationRecordBuilder::INDENT . "\$this->addForeignKey('%s', '%s', '%s', '%s', '%s'); " ;
3434 public const ADD_PK = MigrationRecordBuilder::INDENT . "\$this->addPrimaryKey('%s', '%s', '%s'); " ;
@@ -64,9 +64,9 @@ public function createTable(string $tableAlias, array $columns):string
6464 foreach ($ columns as $ columnName => $ cebeDbColumnSchema ) {
6565 if (is_string ($ cebeDbColumnSchema ->xDbType ) && !empty ($ cebeDbColumnSchema ->xDbType )) {
6666 $ name = static ::quote ($ columnName );
67- $ codeColumns [] = $ name .' ' .$ this ->columnToCode ($ cebeDbColumnSchema , false )->getCode ();
67+ $ codeColumns [] = $ name .' ' .$ this ->columnToCode ($ tableAlias , $ cebeDbColumnSchema , false )->getCode ();
6868 } else {
69- $ codeColumns [$ columnName ] = $ this ->columnToCode ($ cebeDbColumnSchema , false )->getCode ();
69+ $ codeColumns [$ columnName ] = $ this ->columnToCode ($ tableAlias , $ cebeDbColumnSchema , false )->getCode ();
7070 }
7171 }
7272
@@ -80,12 +80,12 @@ public function createTable(string $tableAlias, array $columns):string
8080 public function addColumn (string $ tableAlias , ColumnSchema $ column ):string
8181 {
8282 if (is_string ($ column ->xDbType ) && !empty ($ column ->xDbType )) {
83- $ converter = $ this ->columnToCode ($ column , false );
83+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , false );
8484 $ name = static ::quote ($ column ->name );
8585 return sprintf (self ::ADD_COLUMN_RAW , $ tableAlias , $ name , $ converter ->getCode ());
8686 }
8787
88- $ converter = $ this ->columnToCode ($ column , false );
88+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , false );
8989 return sprintf (self ::ADD_COLUMN , $ tableAlias , $ column ->name , $ converter ->getCode (true ));
9090 }
9191
@@ -95,11 +95,11 @@ public function addColumn(string $tableAlias, ColumnSchema $column):string
9595 public function addDbColumn (string $ tableAlias , ColumnSchema $ column ):string
9696 {
9797 if (property_exists ($ column , 'xDbType ' ) && is_string ($ column ->xDbType ) && !empty ($ column ->xDbType )) {
98- $ converter = $ this ->columnToCode ($ column , true );
98+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , true );
9999 $ name = static ::quote ($ column ->name );
100100 return sprintf (self ::ADD_COLUMN_RAW , $ tableAlias , $ column ->name , $ converter ->getCode ());
101101 }
102- $ converter = $ this ->columnToCode ($ column , true );
102+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , true );
103103 return sprintf (self ::ADD_COLUMN , $ tableAlias , $ column ->name , $ converter ->getCode (true ));
104104 }
105105
@@ -109,15 +109,15 @@ public function addDbColumn(string $tableAlias, ColumnSchema $column):string
109109 public function alterColumn (string $ tableAlias , ColumnSchema $ column ):string
110110 {
111111 if (property_exists ($ column , 'xDbType ' ) && is_string ($ column ->xDbType ) && !empty ($ column ->xDbType )) {
112- $ converter = $ this ->columnToCode ($ column , true , false , true , true );
112+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , true , false , true , true );
113113 return sprintf (
114114 ApiGenerator::isPostgres () ? self ::ALTER_COLUMN_RAW_PGSQL : self ::ALTER_COLUMN_RAW ,
115115 $ tableAlias ,
116116 $ column ->name ,
117117 $ converter ->getCode ()
118118 );
119119 }
120- $ converter = $ this ->columnToCode ($ column , true );
120+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , true );
121121 return sprintf (self ::ALTER_COLUMN , $ tableAlias , $ column ->name , $ converter ->getCode (true ));
122122 }
123123
@@ -127,15 +127,15 @@ public function alterColumn(string $tableAlias, ColumnSchema $column):string
127127 public function alterColumnType (string $ tableAlias , ColumnSchema $ column , bool $ addUsing = false ):string
128128 {
129129 if (property_exists ($ column , 'xDbType ' ) && is_string ($ column ->xDbType ) && !empty ($ column ->xDbType )) {
130- $ converter = $ this ->columnToCode ($ column , false , false , true , true );
130+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , false , false , true , true );
131131 return sprintf (
132132 ApiGenerator::isPostgres () ? self ::ALTER_COLUMN_RAW_PGSQL : self ::ALTER_COLUMN_RAW ,
133133 $ tableAlias ,
134134 $ column ->name ,
135135 rtrim (ltrim ($ converter ->getAlterExpression ($ addUsing ), "' " ), "' " )
136136 );
137137 }
138- $ converter = $ this ->columnToCode ($ column , false );
138+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , false );
139139 return sprintf (self ::ALTER_COLUMN , $ tableAlias , $ column ->name , $ converter ->getAlterExpression ($ addUsing ));
140140 }
141141
@@ -145,15 +145,15 @@ public function alterColumnType(string $tableAlias, ColumnSchema $column, bool $
145145 public function alterColumnTypeFromDb (string $ tableAlias , ColumnSchema $ column , bool $ addUsing = false ) :string
146146 {
147147 if (property_exists ($ column , 'xDbType ' ) && is_string ($ column ->xDbType ) && !empty ($ column ->xDbType )) {
148- $ converter = $ this ->columnToCode ($ column , true , false , true , true );
148+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , true , false , true , true );
149149 return sprintf (
150150 ApiGenerator::isPostgres () ? self ::ALTER_COLUMN_RAW_PGSQL : self ::ALTER_COLUMN_RAW ,
151151 $ tableAlias ,
152152 $ column ->name ,
153153 rtrim (ltrim ($ converter ->getAlterExpression ($ addUsing ), "' " ), "' " )
154154 );
155155 }
156- $ converter = $ this ->columnToCode ($ column , true );
156+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , true );
157157 return sprintf (self ::ALTER_COLUMN , $ tableAlias , $ column ->name , $ converter ->getAlterExpression ($ addUsing ));
158158 }
159159
@@ -162,7 +162,7 @@ public function alterColumnTypeFromDb(string $tableAlias, ColumnSchema $column,
162162 */
163163 public function setColumnDefault (string $ tableAlias , ColumnSchema $ column ):string
164164 {
165- $ default = $ this ->columnToCode ($ column , false , true )->getDefaultValue ();
165+ $ default = $ this ->columnToCode ($ tableAlias , $ column , false , true )->getDefaultValue ();
166166 if ($ default === null ) {
167167 return '' ;
168168 }
@@ -174,7 +174,7 @@ public function setColumnDefault(string $tableAlias, ColumnSchema $column):strin
174174 */
175175 public function setColumnDefaultFromDb (string $ tableAlias , ColumnSchema $ column ):string
176176 {
177- $ default = $ this ->columnToCode ($ column , true , true )->getDefaultValue ();
177+ $ default = $ this ->columnToCode ($ tableAlias , $ column , true , true )->getDefaultValue ();
178178 if ($ default === null ) {
179179 return '' ;
180180 }
@@ -196,9 +196,10 @@ public function dropColumnNotNull(string $tableAlias, ColumnSchema $column):stri
196196 return sprintf (self ::ALTER_COLUMN , $ tableAlias , $ column ->name , '"DROP NOT NULL" ' );
197197 }
198198
199- public function createEnum (string $ columnName , array $ values ):string
199+ public function createEnum (string $ tableAlias , string $ columnName , array $ values ):string
200200 {
201- return sprintf (self ::ADD_ENUM , $ columnName , ColumnToCode::enumToString ($ values ));
201+ $ rawTableName = $ this ->dbSchema ->getRawTableName ($ tableAlias );
202+ return sprintf (self ::ADD_ENUM , $ rawTableName , $ columnName , ColumnToCode::enumToString ($ values ));
202203 }
203204
204205 public function addFk (string $ fkName , string $ tableAlias , string $ fkCol , string $ refTable , string $ refCol ):string
@@ -234,9 +235,10 @@ public function dropTable(string $tableAlias):string
234235 return sprintf (self ::DROP_TABLE , $ tableAlias );
235236 }
236237
237- public function dropEnum (string $ columnName ):string
238+ public function dropEnum (string $ tableAlias , string $ columnName ):string
238239 {
239- return sprintf (self ::DROP_ENUM , $ columnName );
240+ $ rawTableName = $ this ->dbSchema ->getRawTableName ($ tableAlias );
241+ return sprintf (self ::DROP_ENUM , $ rawTableName , $ columnName );
240242 }
241243
242244 public function dropFk (string $ fkName , string $ tableAlias ):string
@@ -258,6 +260,7 @@ public function dropIndex(string $tableAlias, string $indexName):string
258260 * @throws \yii\base\InvalidConfigException
259261 */
260262 private function columnToCode (
263+ string $ tableAlias ,
261264 ColumnSchema $ column ,
262265 bool $ fromDb = false ,
263266 bool $ alter = false ,
@@ -266,6 +269,7 @@ private function columnToCode(
266269 ): ColumnToCode {
267270 return Yii::createObject (ColumnToCode::class, [
268271 $ this ->dbSchema ,
272+ $ tableAlias ,
269273 $ column ,
270274 $ fromDb ,
271275 $ alter ,
0 commit comments