@@ -68,23 +68,28 @@ public function loadClassMetadata(LoadClassMetadataEventArgs $args): void
6868 /**
6969 * Remove fields in Go! AOP proxied class metadata that are inherited
7070 * from traits.
71+ *
72+ * @param ClassMetadata<object> $metadata
7173 */
7274 private function removeMappingsFromTraits (ClassMetadata $ metadata ): void
7375 {
7476 $ traits = $ this ->getTraits ($ metadata ->name );
7577
7678 foreach ($ traits as $ trait ) {
79+ if (!trait_exists ($ trait )) {
80+ continue ;
81+ }
7782 $ trait = new ReflectionClass ($ trait );
7883
7984 foreach ($ trait ->getProperties () as $ property ) {
8085 $ name = $ property ->getName ();
8186
8287 if (isset ($ metadata ->fieldMappings [$ name ])) {
83- $ mapping = $ metadata ->fieldMappings [ $ name] ;
88+ $ columnName = $ metadata ->getColumnName ( $ name) ;
8489
8590 unset(
8691 $ metadata ->fieldMappings [$ name ],
87- $ metadata ->fieldNames [$ mapping [ ' columnName ' ] ],
92+ $ metadata ->fieldNames [$ columnName ],
8893 $ metadata ->columnNames [$ name ]
8994 );
9095 }
@@ -101,6 +106,7 @@ private function removeMappingsFromTraits(ClassMetadata $metadata): void
101106 * @param class-string $className FQCN
102107 * @param bool $autoload Weather to autoload class.
103108 *
109+ * @return string[]
104110 * @throws InvalidArgumentException
105111 * @throws RuntimeException
106112 */
@@ -113,22 +119,22 @@ private function getTraits(string $className, bool $autoload = true): array
113119 $ traits = [];
114120 // Get traits of all parent classes
115121 do {
116- $ traits = array_merge (class_uses ($ className , $ autoload ), $ traits );
122+ $ traits = array_merge (class_uses ($ className , $ autoload ) ?: [] , $ traits );
117123 $ className = get_parent_class ($ className );
118124 } while ($ className );
119125
120126 $ traitsToSearch = $ traits ;
121127
122128 while (count ($ traitsToSearch ) > 0 ) {
123- $ newTraits = class_uses (array_pop ($ traitsToSearch ), $ autoload );
129+ $ newTraits = class_uses (array_pop ($ traitsToSearch ), $ autoload ) ?: [] ;
124130 $ traits = array_merge ($ newTraits , $ traits );
125131 $ traitsToSearch = array_merge ($ newTraits , $ traitsToSearch );
126132 }
127133
128134 foreach ($ traits as $ trait => $ same ) {
129- $ traits = array_merge (class_uses ($ trait , $ autoload ), $ traits );
135+ $ traits = array_merge (class_uses ($ trait , $ autoload ) ?: [] , $ traits );
130136 }
131137
132- return array_unique (array_map (fn ($ fqcn ) => ltrim ($ fqcn , '\\' ), $ traits ));
138+ return array_values ( array_unique (array_map (fn (string $ fqcn ) => ltrim ($ fqcn , '\\' ), $ traits) ));
133139 }
134140}
0 commit comments