public function beforeDelete() { if ($this->getOwner()->getGalleryId()) { $mapper = Manager::getInstance()->getMapper($this->mapper_alias); $aContainer = $mapper->getContainer(); $categoryId = $this->getOwner()->getGalleryId(); // Удаляем все записи о фотках из базы $oQuery = new DbUpdater(DbUpdater::TYPE_DELETE, $aContainer['TableName'], $aContainer['Object'], $this->getDbConnectionAlias()); $oCriteria = new CriteriaElement('category_id', Criteria::EQUAL, $categoryId); $oQuery->addCriteria($mapper->parseUpdateCriteria($oCriteria->renderWhere())); $oQuery->delete(); $this->getOwner()->getGallery()->delete(); } return true; }
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(); } } }
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(); }
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; }