@@ -152,15 +152,23 @@ protected function createManyToMany() {
152
152
$ table2 = $ this ->getTableName ($ manyToOne2 ->className );
153
153
$ class1 = $ this ->classes [$ table1 ];
154
154
$ class2 = $ this ->classes [$ table2 ];
155
- $ table1Member = \lcfirst ($ table1 ) . 's ' ;
156
- $ table2Member = \lcfirst ($ table2 ) . 's ' ;
155
+ $ reflexive =($ class1 ===$ class2 );
156
+ if ($ reflexive ){
157
+ $ table1Member =$ table2Member =$ table .'s ' ;
158
+ $ altName1 =$ this ->getAlternateName ($ manyToOne2 ->name , \current ($ this ->getPrimaryKeys ($ table1 ))) . 's ' ;
159
+ }else {
160
+ $ table1Member = \lcfirst ($ table1 ) . 's ' ;
161
+ $ table2Member = \lcfirst ($ table2 ) . 's ' ;
162
+ $ altName1 =$ altName2 =$ table .'s ' ;
163
+ }
157
164
$ joinTable1 = $ this ->getJoinTableArray ($ class1 , $ manyToOne1 );
158
165
$ joinTable2 = $ this ->getJoinTableArray ($ class2 , $ manyToOne2 );
159
- $ class1 ->addManyToMany ($ table2Member , $ manyToOne2 ->className , $ table1Member , $ table , $ joinTable1 , $ joinTable2 , $ this ->getAlternateName ($ manyToOne2 ->name , \current ($ this ->getPrimaryKeys ($ table1 ))) . 's ' );
160
166
$ class1 ->removeOneToManyMemberByClassAssociation ($ class ->getName ());
161
-
162
- $ class2 ->addManyToMany ($ table1Member , $ manyToOne1 ->className , $ table2Member , $ table , $ joinTable2 , $ joinTable1 , $ this ->getAlternateName ($ manyToOne1 ->name , \current ($ this ->getPrimaryKeys ($ table2 ))) . 's ' );
163
- $ class2 ->removeOneToManyMemberByClassAssociation ($ class ->getName ());
167
+ $ class1 ->addManyToMany ($ table2Member , $ manyToOne2 ->className , $ table1Member , $ table , $ joinTable1 , $ joinTable2 , $ altName1 );
168
+ if (!$ reflexive ){
169
+ $ class2 ->removeOneToManyMemberByClassAssociation ($ class ->getName ());
170
+ $ class2 ->addManyToMany ($ table1Member , $ manyToOne1 ->className , $ table2Member , $ table , $ joinTable2 , $ joinTable1 , $ altName2 );
171
+ }
164
172
unset($ this ->classes [$ table ]);
165
173
}
166
174
}
0 commit comments