@@ -178,7 +178,7 @@ private function buildModel(string $name, array $columns): Model
178
178
if ($ type === 'belongsTo ' ) {
179
179
$ column = $ this ->columnNameFromRelationship ($ relationship );
180
180
if (isset ($ columns [$ column ]) && !str_contains ($ columns [$ column ], ' foreign ' ) && !str_contains ($ columns [$ column ], ' id ' )) {
181
- $ columns [$ column ] .= ' id: ' . Str::before ($ relationship , ': ' );
181
+ $ columns [$ column ] = trim ( $ this -> removeDataTypes ( $ columns [ $ column ]) . ' id: ' . Str::before ($ relationship , ': ' ) );
182
182
}
183
183
}
184
184
}
@@ -215,7 +215,7 @@ private function buildColumn(string $name, string $definition): Column
215
215
$ data_type = null ;
216
216
$ modifiers = [];
217
217
218
- $ tokens = preg_split ( ' #("| \' ).*?\1(*SKIP)(*FAIL)|\s+# ' , $ definition );
218
+ $ tokens = $ this -> parseColumn ( $ definition );
219
219
foreach ($ tokens as $ token ) {
220
220
$ parts = explode (': ' , $ token );
221
221
$ value = $ parts [0 ];
@@ -330,4 +330,19 @@ private function hasBelongsToRelationship(Model $model, string $reference): bool
330
330
331
331
return false ;
332
332
}
333
+
334
+ private function removeDataTypes (string $ definition ): string
335
+ {
336
+ $ tokens = array_filter (
337
+ $ this ->parseColumn ($ definition ),
338
+ fn ($ token ) => strtolower ($ token ) !== 'unsigned ' && !isset (self ::$ dataTypes [strtolower ($ token )])
339
+ );
340
+
341
+ return implode (' ' , $ tokens );
342
+ }
343
+
344
+ private function parseColumn (string $ definition ): array
345
+ {
346
+ return preg_split ('#("| \').*?\1(*SKIP)(*FAIL)|\s+# ' , $ definition );
347
+ }
333
348
}
0 commit comments