From 3aa333045c0bb93b83e87e190b4ed49333d106f0 Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Fri, 8 May 2015 12:10:49 +0200 Subject: [PATCH] fix relation handling when source table equals foreign table --- lib/pq/Gateway/Table.php | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/lib/pq/Gateway/Table.php b/lib/pq/Gateway/Table.php index e365e37..2789963 100644 --- a/lib/pq/Gateway/Table.php +++ b/lib/pq/Gateway/Table.php @@ -405,14 +405,26 @@ class Table implements \SplSubject if (!($relation instanceof Table\Reference)) { $relation = static::resolve($relation)->getRelation($this->getName()); } - $query->write("JOIN", $relation->foreignTable)->write("ON"); - foreach ($relation as $key => $ref) { - $query->criteria( - array( - "{$relation->referencedTable}.{$ref}=" => - new QueryExpr("{$relation->foreignTable}.{$key}") - ) - ); + if ($this->getName() === $relation->foreignTable) { + $query->write("JOIN", $relation->referencedTable)->write("ON"); + foreach ($relation as $key => $ref) { + $query->criteria( + array( + "{$relation->referencedTable}.{$ref}=" => + new QueryExpr("{$relation->foreignTable}.{$key}") + ) + ); + } + } else { + $query->write("JOIN", $relation->foreignTable)->write("ON"); + foreach ($relation as $key => $ref) { + $query->criteria( + array( + "{$relation->referencedTable}.{$ref}=" => + new QueryExpr("{$relation->foreignTable}.{$key}") + ) + ); + } } } if ($where) { -- 2.30.2