localObject = $localObject; $this->foreignObject = $foreignObject; $this->pivotTable = $pivotTable; $this->localInPivot = $localInPivot; $this->remoteInPivot = $remoteInPivot; $this->remoteFilter = $remoteFilter; $this->remoteLimit = $remoteLimit; $this->softDelete = $softDelete; } function get() : Collection { $limitsSql = ''; foreach ($this->remoteLimit as $key => $value) { $limitsSql .= "$key $value "; } $pivotTable = '{' . $this->pivotTable . '}'; $sql = ''; if($this->softDelete){ $sql = "SELECT * FROM $pivotTable WHERE $this->localInPivot = ? AND deleted_at IS NULL $limitsSql"; } else { $sql = "SELECT * FROM $pivotTable WHERE $this->localInPivot = ? $limitsSql"; } $relations = DBInstance::query($sql, Array($this->localObject->id), $this->localObject::_connectionName); $objects = new Collection(); if (empty($relations)) { return new Collection(); } foreach ($relations as $relation) { $relation->childElement = $this->foreignObject::findOne(array_merge(Array("id" => Array("=", $relation->{$this->remoteInPivot})), $this->remoteFilter)); $objects[] = $relation; } if (empty($objects)) { return new Collection(); } return $objects; } }