Exemplo n.º 1
0
 protected function updateTableData($table, $data)
 {
     if (isset($data['Insert'])) {
         foreach ($data['Insert'] as $insert) {
             $oQuery = new DbUpdater(DbUpdater::TYPE_INSERT, $table, 't', $this->_dbConnection);
             $oQuery->setElement($insert);
             $oQuery->insert();
         }
     }
     if (isset($data['Update'])) {
         foreach ($data['Update'] as $insert) {
             $oQuery = new DbUpdater(DbUpdater::TYPE_UPDATE, $table, 't', $this->_dbConnection);
             $oQuery->setElement($insert);
             $oCriteria = new CriteriaElement('id', Criteria::EQUAL, $insert['id']);
             $oQuery->addCriteria($oCriteria->renderWhere());
             $oQuery->update();
         }
     }
 }
Exemplo n.º 2
0
 protected function update($table, $data, $pk)
 {
     $oQuery = new DbUpdater(DbUpdater::TYPE_UPDATE, $table, 't', $this->dbConnection);
     $oQuery->setElement($data);
     $oCriteria = new CriteriaElement('id', Criteria::EQUAL, $pk);
     $oQuery->addCriteria($oCriteria->renderWhere());
     $oQuery->update();
 }
Exemplo n.º 3
0
 protected function saveForRelationData($oObject, $before = false)
 {
     $saveForRelation = $before ? $oObject->aForSaveRelationsDataBefore : $oObject->aForSaveRelationsData;
     $objectId = $before ? 0 : (int) $oObject->getId();
     if (!empty($saveForRelation)) {
         $relations = $this->relations();
         foreach ($saveForRelation as $rel => $val) {
             $relation = $relations[$rel];
             foreach ($val as $action => $data) {
                 $oRelMapper = Manager::getInstance()->getMapper($relation['ToMapperAlias']);
                 $aRelContainer = $oRelMapper->getContainer();
                 $sRelClassName = $aRelContainer['Object'];
                 switch ($action) {
                     case 'Delete':
                         // Удаляем все что есть
                         $oQuery = new DbUpdater(DbUpdater::TYPE_DELETE, $relation['TableName'], $sRelClassName, $this->getDbConnectionAlias());
                         $oCriteria = new CriteriaElement($relation['Field2'], Criteria::EQUAL, $objectId);
                         $oQuery->addCriteria($this->parseUpdateCriteria($oCriteria->renderWhere()));
                         $oQuery->delete();
                         break;
                     case 'Add':
                         // сохраняем в базу
                         if (is_array($data)) {
                             foreach ($data as $data_val) {
                                 $oQuery = new DbUpdater(DbUpdater::TYPE_INSERT, $relation['TableName'], $sRelClassName, $this->getDbConnectionAlias());
                                 $oQuery->setElement(array($relation['Field'] => $data_val, $relation['Field2'] => $objectId));
                                 $oQuery->insert();
                             }
                         }
                         break;
                         // Has Many
                     // Has Many
                     case 'Set':
                         if (is_array($data)) {
                             $result = new SimpleCollection();
                             foreach ($data as $itm) {
                                 if (!empty($itm['Id'])) {
                                     $obj = $oRelMapper->findById($itm['Id']);
                                 } else {
                                     $obj = $oRelMapper->create();
                                 }
                                 unset($itm['Id']);
                                 $obj->import($itm);
                                 $obj->set($relation['Field'], $objectId);
                                 $obj->save();
                                 $result->add($obj);
                             }
                         }
                         break;
                         // Belongs To
                     // Belongs To
                     case 'SetOne':
                         if (is_array($data)) {
                             if (!empty($data['Id'])) {
                                 $obj = $oRelMapper->findById($data['Id']);
                             } else {
                                 $obj = $oRelMapper->create($data);
                             }
                             unset($data['Id']);
                             $obj->import($data);
                             $id = $obj->save();
                             $oObject->set($relation['Field'], $id);
                             $oObject->set($rel, $obj);
                         } else {
                             if (is_object($data)) {
                                 if (!$data->getId()) {
                                     $data->save();
                                 }
                                 $oObject->set($rel, $data);
                             }
                         }
                         break;
                 }
             }
         }
         if ($before) {
             $oObject->aForSaveRelationsDataBefore = array();
         } else {
             $oObject->aForSaveRelationsData = array();
         }
         return true;
     }
     return false;
 }