diff --git a/src/Driver/AbstractDriver.php b/src/Driver/AbstractDriver.php index 45bcc4e..84865a8 100644 --- a/src/Driver/AbstractDriver.php +++ b/src/Driver/AbstractDriver.php @@ -8,6 +8,7 @@ use Pulsar\Model; use Pulsar\Property; use Pulsar\Query; +use Pulsar\Relation\Pivot; use Pulsar\Type; use UnitEnum; @@ -122,9 +123,12 @@ protected function addJoins(Query $query, string $tablename, SelectQuery $dbQuer foreach ($query->getJoins() as $join) { [$foreignModelClass, $column, $foreignKey, $type] = $join; - $foreignModel = new $foreignModelClass(); + + $foreignModel = $foreignModelClass instanceof Pivot ? $foreignModelClass : new $foreignModelClass(); $foreignTablename = $foreignModel->getTablename(); - $condition = $this->prefixColumn($column, $tablename).'='.$this->prefixColumn($foreignKey, $foreignTablename); + $condition = $foreignModelClass instanceof Pivot + ? $this->prefixColumn($column, $foreignTablename).'='.$this->prefixColumn($foreignKey, $tablename) + : $this->prefixColumn($column, $tablename).'='.$this->prefixColumn($foreignKey, $foreignTablename); $dbQuery->join($foreignTablename, $condition, null, $type); } diff --git a/src/Relation/BelongsToMany.php b/src/Relation/BelongsToMany.php index 50ff706..a789e38 100644 --- a/src/Relation/BelongsToMany.php +++ b/src/Relation/BelongsToMany.php @@ -40,13 +40,13 @@ protected function initQuery(Query $query): Query $pivot = new Pivot(); $pivot->setTablename($this->tablename); - $ids = $this->localModel->ids(); - foreach ($ids as $idProperty => $id) { + //known issue - this will work only on single join column + foreach ($this->localModel->ids() as $idProperty => $id) { if (null === $id) { $this->empty = true; } - $query->where($this->localKey, $id); + $query->where("$this->tablename.$this->localKey = $id"); $query->join($pivot, $this->foreignKey, $idProperty); }