/**
  * Remove um objeto do banco de dados através de sua chave primária.
  * Caso a sua chave primária não exista, o objeto do banco de dados
  * será excluído tendo como where, toda sua estrutura.
  *
  * @return int
  */
 public function delete()
 {
     if (!empty($this->primaryKey)) {
         return $this->tableGateway->delete([$this->primaryKey => $this->getId()]);
     } else {
         return $this->tableGateway->delete(Extractor::extract($this));
     }
 }