develop (#2)
Changed namespaces and added Query Builder Co-authored-by: Juan Pablo Vial <jpvial@goacegroup.com> Reviewed-on: #2
This commit is contained in:
81
src/Implement/ResultSet.php
Normal file
81
src/Implement/ResultSet.php
Normal file
@ -0,0 +1,81 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user