From 91ad55e1c714b117af634f9d6f6d695506ab98b3 Mon Sep 17 00:00:00 2001 From: e1himself Date: Wed, 23 Aug 2017 13:14:04 +0300 Subject: [PATCH] Fix a way it determines first PK Previously, it was producing an invalid order in case we're using a many-to-many cross-ref table referencing to the same table twice. Thus checking for a table name is not reliable. Now we just check if the first PK is the same as a give FK. That's it. --- generator/lib/builder/om/PHP5ObjectBuilder.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/generator/lib/builder/om/PHP5ObjectBuilder.php b/generator/lib/builder/om/PHP5ObjectBuilder.php index a68e1cd36..b09f7f3ce 100644 --- a/generator/lib/builder/om/PHP5ObjectBuilder.php +++ b/generator/lib/builder/om/PHP5ObjectBuilder.php @@ -4282,8 +4282,10 @@ protected function addCrossFkScheduledForDeletion(&$script, $refFK, $crossFK) $lowerRelatedName = lcfirst($relatedName); $lowerSingleRelatedName = lcfirst($this->getFKPhpNameAffix($crossFK, $plural = false)); - $middelFks = $refFK->getTable()->getForeignKeys(); - $isFirstPk = ($middelFks[0]->getForeignTableCommonName() == $this->getTable()->getCommonName()); + /** @var \ForeignKey $refFK */ + /** @var \Column[] $middlePks */ + $middlePks = $refFK->getTable()->getPrimaryKey(); + $isFirstPk = ($middlePks[0]->getName() === $refFK->getLocalColumnName()); $script .= " if (\$this->{$lowerRelatedName}ScheduledForDeletion !== null) {