public function update(array $data, array $where = []) : bool {
    $this->query_builder->resetProperties();
    $this->query_builder->setMode('update');

    $this->query_builder->setData($data);

    if (!empty($where)) {
      $this->query_builder->setWhere($where);
      $where = $this->formatWhereData($where);
    }

    try {
      $stmt = parent::prepare($this->query_builder->getQuery());

      return $stmt->execute(array_merge($data, $where));
    } catch (PDOException $e) {
      $this->pdo_exception = $e;

      return false;
    }
  }