X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fpq%2FGateway%2FTable.php;h=2789963a35f2ee0ac38620820004a84d0979d35e;hb=0861b6cd0d8f86add1a068fd3d9740428c8418cd;hp=e365e3772f836ce19a58bc8f2e7a788b07a4f4ee;hpb=d3a497c12f60567cbb20ea626fd909f94955ebac;p=m6w6%2Fpq-gateway 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) {