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); } }