Exemple #1
0
 /**
  * Deleta dados no repositório.
  *
  * @param ValueObjectAbstract $valueObject
  * @return br\gov\sial\core\persist\Persist
  * @throws PersistException
  * */
 public function delete(ValueObjectAbstract $valueObject)
 {
     $annon = $valueObject->annotation()->load();
     $tmpFilter = NULL;
     # tecnica explicada no metodo findByParam
     $tmpOperator = array('WHERE', 'AND');
     foreach ($annon->attrs as $field) {
         if (!isset($field->database) || !isset($field->primaryKey)) {
             // @codeCoverageIgnoreStart
             continue;
             // @codeCoverageIgnoreEnd
         }
         $tmpFilter .= sprintf(' %1$s %2$s = :%2$s', $tmpOperator[(bool) $tmpFilter], $field->database);
         $params[$field->database] = self::_getValue($valueObject, $field->get, $field->type);
     }
     # por padrao nao eh possivel atualizar toda a entidade, se realmente  for necessario realizar
     # esta operacao sobreescreve este metodo
     PersistException::throwsExceptionIfParamIsNull($tmpFilter, sprintf(self::PERSIST_UNAVAILABLE_DELETE_FILTER, $annon->entity));
     $query = sprintf('DELETE FROM %s %s', $annon->entity, $tmpFilter);
     $this->_persist->getConnect()->prepare($query, $params)->update();
 }