@@ -49,23 +49,43 @@ public static function fromReflection(GenericReflection $reflection, string $nam
49
49
$ columns [$ column ->getName ()] = $ column ;
50
50
}
51
51
// set primary key
52
- $ columnNames = $ reflection ->getTablePrimaryKeys ($ name );
53
- if (count ($ columnNames ) == 1 ) {
54
- $ columnName = $ columnNames [0 ];
55
- if (isset ($ columns [$ columnName ])) {
56
- $ pk = $ columns [$ columnName ];
57
- $ pk ->setPk (true );
52
+ $ columnName = false ;
53
+ if ($ type == 'view ' ) {
54
+ $ columnName = 'id ' ;
55
+ } else {
56
+ $ columnNames = $ reflection ->getTablePrimaryKeys ($ name );
57
+ if (count ($ columnNames ) == 1 ) {
58
+ $ columnName = $ columnNames [0 ];
58
59
}
59
60
}
61
+ if ($ columnName && isset ($ columns [$ columnName ])) {
62
+ $ pk = $ columns [$ columnName ];
63
+ $ pk ->setPk (true );
64
+ }
60
65
// set foreign keys
61
- $ fks = $ reflection ->getTableForeignKeys ($ name );
62
- foreach ($ fks as $ columnName => $ table ) {
63
- $ columns [$ columnName ]->setFk ($ table );
66
+ if ($ type == 'view ' ) {
67
+ $ tables = $ reflection ->getTables ();
68
+ foreach ($ columns as $ columnName => $ column ) {
69
+ if (substr ($ columnName , -3 ) == '_id ' ) {
70
+ foreach ($ tables as $ table ) {
71
+ $ tableName = $ table ['TABLE_NAME ' ];
72
+ $ suffix = $ tableName . '_id ' ;
73
+ if (substr ($ columnName , -1 * strlen ($ suffix )) == $ suffix ) {
74
+ $ column ->setFk ($ tableName );
75
+ }
76
+ }
77
+ }
78
+ }
79
+ } else {
80
+ $ fks = $ reflection ->getTableForeignKeys ($ name );
81
+ foreach ($ fks as $ columnName => $ table ) {
82
+ $ columns [$ columnName ]->setFk ($ table );
83
+ }
64
84
}
65
85
return new ReflectedTable ($ name , $ type , array_values ($ columns ));
66
86
}
67
87
68
- public static function fromJson (/* object */ $ json ): ReflectedTable
88
+ public static function fromJson ( /* object */ $ json ): ReflectedTable
69
89
{
70
90
$ name = $ json ->name ;
71
91
$ type = isset ($ json ->type ) ? $ json ->type : 'table ' ;
0 commit comments