/** * Builds and executes a prepared statement. * * @param string $sql * @param array $values * @return PDOStatement * @throws RuntimeException */ public function execute($sql, array $values = array()) { if (!isset($this->entity)) { throw new RuntimeException('Entity name is undefined'); } else { if (!isset($this->table)) { throw new RuntimeException('Table name is undefined'); } } $stmt = $this->db->prepare(trim($sql)); $stmt->setFetchMode(PDO::FETCH_OBJ | PDO::FETCH_PROPS_LATE); $stmt->execute($values); $this->db->addQuery($stmt->queryString); return $stmt; }