Skip to content

Commit f249055

Browse files
committed
Fix for reflexive ManyToMany
1 parent bff5b7b commit f249055

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/Ubiquity/orm/creator/ModelsCreator.php

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -152,15 +152,23 @@ protected function createManyToMany() {
152152
$table2 = $this->getTableName($manyToOne2->className);
153153
$class1 = $this->classes[$table1];
154154
$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+
}
157164
$joinTable1 = $this->getJoinTableArray($class1, $manyToOne1);
158165
$joinTable2 = $this->getJoinTableArray($class2, $manyToOne2);
159-
$class1->addManyToMany($table2Member, $manyToOne2->className, $table1Member, $table, $joinTable1, $joinTable2, $this->getAlternateName($manyToOne2->name, \current($this->getPrimaryKeys($table1))) . 's');
160166
$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+
}
164172
unset($this->classes[$table]);
165173
}
166174
}

0 commit comments

Comments
 (0)