@@ -16,6 +16,10 @@ final public function safeUp(): bool
16
16
}
17
17
18
18
foreach ($ this ->defineTableData () as $ table ) {
19
+ if ($ this ->db ->tableExists ($ table ->getDatabaseName ())) {
20
+ continue ;
21
+ }
22
+
19
23
$ table ->addField ('dateCreated ' , $ this ->dateTime ()->notNull ());
20
24
$ table ->addField ('dateUpdated ' , $ this ->dateTime ()->notNull ());
21
25
$ table ->addField ('uid ' , $ this ->uid ());
@@ -34,15 +38,19 @@ final public function safeUp(): bool
34
38
35
39
foreach ($ this ->defineTableData () as $ table ) {
36
40
foreach ($ table ->getForeignKeys () as $ foreignKey ) {
37
- $ this ->addForeignKey (
38
- $ foreignKey ->getName (),
39
- $ table ->getDatabaseName (),
40
- $ foreignKey ->getColumn (),
41
- $ foreignKey ->getDatabaseReferenceTableName (),
42
- $ foreignKey ->getReferenceColumn (),
43
- $ foreignKey ->getOnDelete (),
44
- $ foreignKey ->getOnUpdate ()
45
- );
41
+ try {
42
+ $ this ->addForeignKey (
43
+ $ foreignKey ->getName (),
44
+ $ table ->getDatabaseName (),
45
+ $ foreignKey ->getColumn (),
46
+ $ foreignKey ->getDatabaseReferenceTableName (),
47
+ $ foreignKey ->getReferenceColumn (),
48
+ $ foreignKey ->getOnDelete (),
49
+ $ foreignKey ->getOnUpdate ()
50
+ );
51
+ } catch (\Exception $ e ) {
52
+ \Craft::warning ($ e ->getMessage ());
53
+ }
46
54
}
47
55
}
48
56
@@ -58,17 +66,23 @@ final public function safeDown(): bool
58
66
return false ;
59
67
}
60
68
69
+ if ($ this instanceof KeepTablesAfterUninstallInterface) {
70
+ return true ;
71
+ }
72
+
61
73
$ tables = $ this ->defineTableData ();
62
74
63
75
foreach ($ tables as $ table ) {
64
- if (!\Craft:: $ app ->db ->tableExists ($ table ->getDatabaseName ())) {
76
+ if (!$ this ->db ->tableExists ($ table ->getDatabaseName ())) {
65
77
continue ;
66
78
}
67
79
68
80
foreach ($ table ->getForeignKeys () as $ foreignKey ) {
69
81
try {
70
82
$ this ->dropForeignKey ($ foreignKey ->getName (), $ table ->getDatabaseName ());
71
- } catch (\Exception $ e ) {}
83
+ } catch (\Exception $ e ) {
84
+ \Craft::warning ($ e ->getMessage ());
85
+ }
72
86
}
73
87
}
74
88
0 commit comments