/** * retorna representacao textual do comando para remover os dados * * @param ValueObjectAbstract * @return string * */ public function delete(ValueObjectAbstract $valueObject) { $data = new DMLData(); $data = $data->getFilledAttr($valueObject); DMLException::throwsExceptionIfParamIsNull((array) $data, self::T_DMLABSTRACT_FILTER_REQUIRED); $annon = $valueObject->annotation()->load(); $filter = NULL; foreach ($data as $key => $column) { $attrName = str_replace(':', '', $key); if (isset($annon->attrs->{$attrName}) && isset($annon->attrs->{$attrName}->database)) { $filter .= sprintf(' %s %s %s :%s', $filter ? 'AND' : 'WHERE', $annon->attrs->{$attrName}->database, $column->value === NULL ? 'IS' : '=', $annon->attrs->{$attrName}->name); } } return sprintf('DELETE FROM %s%s', $this->_persist->getEntity($valueObject)->qualifiedName(), $filter); }
/** * PersistAttr para insert * * @param array &$list * @param string $attr * @param ValueObjectAbstract $valueObject * @throws DMLException * */ private function _persistAttrInsert(array &$list, $attr, $valueObject) { $getter = self::getIfDefined($attr, 'get'); $type = strtolower(self::getIfDefined($attr, 'type')); $value = $valueObject->{$getter}(); $isRequired = 'false' == strtolower(self::getIfDefined($attr, 'nullable')) ? TRUE : FALSE; $isPrimaryKey = 'true' == strtolower(self::getIfDefined($attr, 'primaryKey')) ? TRUE : FALSE; # considera chave-primaria apenas se um valor for # definido explicitamente if (empty($value) && TRUE === $isPrimaryKey) { return; } # critica campo requerido sem valor DMLException::throwsExceptionIfParamIsNull(!(NULL === $value && TRUE === $isRequired), sprintf(Persist::PERSIST_ATTR_REQUIRED, $attr->name)); $list[] = $attr; }