Files
database/src/Implement/ResultSet.php
aldarien f6937c3aee develop (#2)
Changed namespaces and added Query Builder

Co-authored-by: Juan Pablo Vial <jpvial@goacegroup.com>
Reviewed-on: #2
2025-09-30 17:34:06 -03:00

82 lines
1.7 KiB
PHP

<?php
namespace Database\Implement;
use PDO;
use PDOStatement;
use Database\Define;
use Database\Exception\Database\BlankResult;
class ResultSet implements Define\Database\ResultSet
{
public function __construct(PDOStatement $statement)
{
$this->setStatement($statement);
}
protected PDOStatement $statement;
public function getStatement(): PDOStatement
{
return $this->statement;
}
protected function setStatement(PDOStatement $statement): self
{
$this->statement = $statement;
return $this;
}
public function execute(array $data): self
{
$this->statement->execute($data);
return $this;
}
/**
* @return PDOStatement
* @throws BlankResult
*/
protected function checkResults(): PDOStatement
{
if ($this->getStatement()->rowCount() === 0) {
throw new BlankResult(query: $this->getStatement()->queryString);
}
return $this->getStatement();
}
/**
* @return array
* @throws BlankResult
*/
public function fetchFirst(): array
{
return $this->checkResults()->fetch(PDO::FETCH_ASSOC);
}
/**
* @return array
* @throws BlankResult
*/
public function fetchAll(): array
{
return $this->checkResults()->fetchAll(PDO::FETCH_ASSOC);
}
/**
* @return object
* @throws BlankResult
*/
public function fetchFirstAsObject(): object
{
return $this->checkResults()->fetch(PDO::FETCH_OBJ);
}
/**
* @return array
* @throws BlankResult
*/
public function fetchAllAsObjects(): array
{
return $this->checkResults()->fetchAll(PDO::FETCH_OBJ);
}
}