public function execute($bindValues = array(), $additionalParameters = array(), $query = null) { $query = $this->getQuery(); $blobs = $this->blobs; if (!empty($blobs) && ($this->isInsert() || $this->isUpdate())) { $cols = array(); $hlds = array(); foreach ($blobs as $column => $blob) { $cols[] = $column; $hlds[] = ":" . $column; $this->bindValues[$column] = $blob; } $query .= " RETURNING " . implode(", ", $cols) . " INTO " . implode(", ", $hlds); } $this->query = $query; $result = parent::execute($bindValues, $additionalParameters); if (!empty($blobs) && ($this->isInsert() || $this->isUpdate())) { foreach ($blobs as $blob) { $blob->unlink(); } } if (!$this->isSelect() || empty($result)) { return $result; } // FETCH LOB CONTENTS $lobColumns = array(); foreach ($this->metadata->getColumns() as $column) { if ($column->isText() || $column->isBinary()) { $lobColumns[] = $column->name; } } if (!empty($lobColumns)) { foreach ($result as &$row) { foreach ($lobColumns as $colName) { if (isset($row[$colName])) { $row[$colName] = stream_get_contents($row[$colName]); } } } } return $result; }
public function execute($bindValues = array(), $additionalParameters = array(), $query = null) { $result = parent::execute($bindValues, $additionalParameters); if (!$this->isSelect() || empty($result)) { return $result; } // PDO_PGSQL BYTEA HACK $binColumns = array(); foreach ($this->metadata->getColumns() as $column) { if ($column->isBinary()) { $binColumns[] = $column->name; } } if (!empty($binColumns)) { foreach ($result as &$row) { foreach ($binColumns as $colName) { if (isset($row[$colName])) { $row[$colName] = stream_get_contents($row[$colName]); } } } } return $result; }