@@ -27,8 +27,8 @@ final class MigrationRecordBuilder
27
27
public const ADD_UNIQUE = MigrationRecordBuilder::INDENT . "\$this->createIndex('%s', '%s', '%s', true); " ;
28
28
public const ADD_INDEX = MigrationRecordBuilder::INDENT . "\$this->createIndex('%s', '%s', '%s', %s); " ;
29
29
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 \" '); " ;
32
32
public const DROP_TABLE = MigrationRecordBuilder::INDENT . "\$this->dropTable('%s'); " ;
33
33
public const ADD_FK = MigrationRecordBuilder::INDENT . "\$this->addForeignKey('%s', '%s', '%s', '%s', '%s'); " ;
34
34
public const ADD_PK = MigrationRecordBuilder::INDENT . "\$this->addPrimaryKey('%s', '%s', '%s'); " ;
@@ -64,9 +64,9 @@ public function createTable(string $tableAlias, array $columns):string
64
64
foreach ($ columns as $ columnName => $ cebeDbColumnSchema ) {
65
65
if (is_string ($ cebeDbColumnSchema ->xDbType ) && !empty ($ cebeDbColumnSchema ->xDbType )) {
66
66
$ name = static ::quote ($ columnName );
67
- $ codeColumns [] = $ name .' ' .$ this ->columnToCode ($ cebeDbColumnSchema , false )->getCode ();
67
+ $ codeColumns [] = $ name .' ' .$ this ->columnToCode ($ tableAlias , $ cebeDbColumnSchema , false )->getCode ();
68
68
} else {
69
- $ codeColumns [$ columnName ] = $ this ->columnToCode ($ cebeDbColumnSchema , false )->getCode ();
69
+ $ codeColumns [$ columnName ] = $ this ->columnToCode ($ tableAlias , $ cebeDbColumnSchema , false )->getCode ();
70
70
}
71
71
}
72
72
@@ -80,12 +80,12 @@ public function createTable(string $tableAlias, array $columns):string
80
80
public function addColumn (string $ tableAlias , ColumnSchema $ column ):string
81
81
{
82
82
if (is_string ($ column ->xDbType ) && !empty ($ column ->xDbType )) {
83
- $ converter = $ this ->columnToCode ($ column , false );
83
+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , false );
84
84
$ name = static ::quote ($ column ->name );
85
85
return sprintf (self ::ADD_COLUMN_RAW , $ tableAlias , $ name , $ converter ->getCode ());
86
86
}
87
87
88
- $ converter = $ this ->columnToCode ($ column , false );
88
+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , false );
89
89
return sprintf (self ::ADD_COLUMN , $ tableAlias , $ column ->name , $ converter ->getCode (true ));
90
90
}
91
91
@@ -95,11 +95,11 @@ public function addColumn(string $tableAlias, ColumnSchema $column):string
95
95
public function addDbColumn (string $ tableAlias , ColumnSchema $ column ):string
96
96
{
97
97
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 );
99
99
$ name = static ::quote ($ column ->name );
100
100
return sprintf (self ::ADD_COLUMN_RAW , $ tableAlias , $ column ->name , $ converter ->getCode ());
101
101
}
102
- $ converter = $ this ->columnToCode ($ column , true );
102
+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , true );
103
103
return sprintf (self ::ADD_COLUMN , $ tableAlias , $ column ->name , $ converter ->getCode (true ));
104
104
}
105
105
@@ -109,15 +109,15 @@ public function addDbColumn(string $tableAlias, ColumnSchema $column):string
109
109
public function alterColumn (string $ tableAlias , ColumnSchema $ column ):string
110
110
{
111
111
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 );
113
113
return sprintf (
114
114
ApiGenerator::isPostgres () ? self ::ALTER_COLUMN_RAW_PGSQL : self ::ALTER_COLUMN_RAW ,
115
115
$ tableAlias ,
116
116
$ column ->name ,
117
117
$ converter ->getCode ()
118
118
);
119
119
}
120
- $ converter = $ this ->columnToCode ($ column , true );
120
+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , true );
121
121
return sprintf (self ::ALTER_COLUMN , $ tableAlias , $ column ->name , $ converter ->getCode (true ));
122
122
}
123
123
@@ -127,15 +127,15 @@ public function alterColumn(string $tableAlias, ColumnSchema $column):string
127
127
public function alterColumnType (string $ tableAlias , ColumnSchema $ column , bool $ addUsing = false ):string
128
128
{
129
129
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 );
131
131
return sprintf (
132
132
ApiGenerator::isPostgres () ? self ::ALTER_COLUMN_RAW_PGSQL : self ::ALTER_COLUMN_RAW ,
133
133
$ tableAlias ,
134
134
$ column ->name ,
135
135
rtrim (ltrim ($ converter ->getAlterExpression ($ addUsing ), "' " ), "' " )
136
136
);
137
137
}
138
- $ converter = $ this ->columnToCode ($ column , false );
138
+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , false );
139
139
return sprintf (self ::ALTER_COLUMN , $ tableAlias , $ column ->name , $ converter ->getAlterExpression ($ addUsing ));
140
140
}
141
141
@@ -145,15 +145,15 @@ public function alterColumnType(string $tableAlias, ColumnSchema $column, bool $
145
145
public function alterColumnTypeFromDb (string $ tableAlias , ColumnSchema $ column , bool $ addUsing = false ) :string
146
146
{
147
147
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 );
149
149
return sprintf (
150
150
ApiGenerator::isPostgres () ? self ::ALTER_COLUMN_RAW_PGSQL : self ::ALTER_COLUMN_RAW ,
151
151
$ tableAlias ,
152
152
$ column ->name ,
153
153
rtrim (ltrim ($ converter ->getAlterExpression ($ addUsing ), "' " ), "' " )
154
154
);
155
155
}
156
- $ converter = $ this ->columnToCode ($ column , true );
156
+ $ converter = $ this ->columnToCode ($ tableAlias , $ column , true );
157
157
return sprintf (self ::ALTER_COLUMN , $ tableAlias , $ column ->name , $ converter ->getAlterExpression ($ addUsing ));
158
158
}
159
159
@@ -162,7 +162,7 @@ public function alterColumnTypeFromDb(string $tableAlias, ColumnSchema $column,
162
162
*/
163
163
public function setColumnDefault (string $ tableAlias , ColumnSchema $ column ):string
164
164
{
165
- $ default = $ this ->columnToCode ($ column , false , true )->getDefaultValue ();
165
+ $ default = $ this ->columnToCode ($ tableAlias , $ column , false , true )->getDefaultValue ();
166
166
if ($ default === null ) {
167
167
return '' ;
168
168
}
@@ -174,7 +174,7 @@ public function setColumnDefault(string $tableAlias, ColumnSchema $column):strin
174
174
*/
175
175
public function setColumnDefaultFromDb (string $ tableAlias , ColumnSchema $ column ):string
176
176
{
177
- $ default = $ this ->columnToCode ($ column , true , true )->getDefaultValue ();
177
+ $ default = $ this ->columnToCode ($ tableAlias , $ column , true , true )->getDefaultValue ();
178
178
if ($ default === null ) {
179
179
return '' ;
180
180
}
@@ -196,9 +196,10 @@ public function dropColumnNotNull(string $tableAlias, ColumnSchema $column):stri
196
196
return sprintf (self ::ALTER_COLUMN , $ tableAlias , $ column ->name , '"DROP NOT NULL" ' );
197
197
}
198
198
199
- public function createEnum (string $ columnName , array $ values ):string
199
+ public function createEnum (string $ tableAlias , string $ columnName , array $ values ):string
200
200
{
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 ));
202
203
}
203
204
204
205
public function addFk (string $ fkName , string $ tableAlias , string $ fkCol , string $ refTable , string $ refCol ):string
@@ -234,9 +235,10 @@ public function dropTable(string $tableAlias):string
234
235
return sprintf (self ::DROP_TABLE , $ tableAlias );
235
236
}
236
237
237
- public function dropEnum (string $ columnName ):string
238
+ public function dropEnum (string $ tableAlias , string $ columnName ):string
238
239
{
239
- return sprintf (self ::DROP_ENUM , $ columnName );
240
+ $ rawTableName = $ this ->dbSchema ->getRawTableName ($ tableAlias );
241
+ return sprintf (self ::DROP_ENUM , $ rawTableName , $ columnName );
240
242
}
241
243
242
244
public function dropFk (string $ fkName , string $ tableAlias ):string
@@ -258,6 +260,7 @@ public function dropIndex(string $tableAlias, string $indexName):string
258
260
* @throws \yii\base\InvalidConfigException
259
261
*/
260
262
private function columnToCode (
263
+ string $ tableAlias ,
261
264
ColumnSchema $ column ,
262
265
bool $ fromDb = false ,
263
266
bool $ alter = false ,
@@ -266,6 +269,7 @@ private function columnToCode(
266
269
): ColumnToCode {
267
270
return Yii::createObject (ColumnToCode::class, [
268
271
$ this ->dbSchema ,
272
+ $ tableAlias ,
269
273
$ column ,
270
274
$ fromDb ,
271
275
$ alter ,
0 commit comments