コード例 #1
0
ファイル: DML.php プロジェクト: sgdoc/sgdoce-codigo
 /**
  * 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);
 }
コード例 #2
0
ファイル: DMLAbstract.php プロジェクト: sgdoc/sgdoce-codigo
 /**
  * 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;
 }