@@ -178,7 +178,7 @@ private function buildModel(string $name, array $columns): Model
178178 if ($ type === 'belongsTo ' ) {
179179 $ column = $ this ->columnNameFromRelationship ($ relationship );
180180 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 , ': ' ) );
182182 }
183183 }
184184 }
@@ -215,7 +215,7 @@ private function buildColumn(string $name, string $definition): Column
215215 $ data_type = null ;
216216 $ modifiers = [];
217217
218- $ tokens = preg_split ( ' #("| \' ).*?\1(*SKIP)(*FAIL)|\s+# ' , $ definition );
218+ $ tokens = $ this -> parseColumn ( $ definition );
219219 foreach ($ tokens as $ token ) {
220220 $ parts = explode (': ' , $ token );
221221 $ value = $ parts [0 ];
@@ -330,4 +330,19 @@ private function hasBelongsToRelationship(Model $model, string $reference): bool
330330
331331 return false ;
332332 }
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+ }
333348}
0 commit comments