X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fpq-gateway;a=blobdiff_plain;f=lib%2Fpq%2FGateway%2FTable.php;fp=lib%2Fpq%2FGateway%2FTable.php;h=e365e3772f836ce19a58bc8f2e7a788b07a4f4ee;hp=472d0038008a129184d6815ea232e75dc14fcadd;hb=d3a497c12f60567cbb20ea626fd909f94955ebac;hpb=51f1ba99cc3bd04f06db34c145952494779a6e48 diff --git a/lib/pq/Gateway/Table.php b/lib/pq/Gateway/Table.php index 472d003..e365e37 100644 --- a/lib/pq/Gateway/Table.php +++ b/lib/pq/Gateway/Table.php @@ -360,10 +360,12 @@ class Table implements \SplSubject return $this->onResult(null); } - return $this->find( - array($rel->foreignColumn . "=" => $foreign->{$rel->referencedColumn}), - $order, $limit, $offset - ); + $where = array(); + foreach ($rel as $key => $ref) { + $where["$key="] = $foreign->$ref; + } + + return $this->find($where, $order, $limit, $offset); } /** @@ -379,9 +381,11 @@ class Table implements \SplSubject return $this->onResult(null); } - return $this->find( - array($rel->referencedColumn . "=" => $foreign->{$rel->foreignColumn}) - ); + $where = array(); + foreach ($rel as $key => $ref) { + $where["$ref="] = $foreign->$key; + } + return $this->find($where); } /** @@ -401,12 +405,15 @@ class Table implements \SplSubject if (!($relation instanceof Table\Reference)) { $relation = static::resolve($relation)->getRelation($this->getName()); } - $query->write("JOIN", $relation->foreignTable)->write("ON")->criteria( - array( - "{$relation->referencedTable}.{$relation->referencedColumn}=" => - new QueryExpr("{$relation->foreignTable}.{$relation->foreignColumn}") - ) - ); + $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) { $query->write("WHERE")->criteria($where);