/** * Prepare a statement * @param string $statement the SQL query * @param array $driver_options * @return \PdoStatement */ public function prepare($statement, $driver_options = []) { if (!is_null($this->pagination)) { $pagination_query = $this->paginateQuery($statement, $this->pagination->getCurrentPageNumber(), $this->pagination->getMaxResultsPerPage()); $count_query = $this->convertToCountQuery($statement); $primary_statement = parent::prepare($pagination_query, $driver_options); $count_statement = parent::prepare($count_query, $driver_options); $statement = new PdoStatement(); $statement->setPagination($this->pagination); $statement->setPrimaryStatement($primary_statement); $statement->setCountStatement($count_statement); // clear pagination $this->pagination = null; return $statement; } else { return parent::prepare($statement, $driver_options); } }