public function updateGroupProviderId($oldId, $newId) { if (strlen($oldId) > 0 && strlen($newId) > 0 && $oldId != $newId) { $dao = new EngineBlock_Model_DbTable_GroupProviderDecorator(); return $dao->update(array('group_provider_id' => $newId), "group_provider_id = '{$oldId}'"); } else { // ignore return true; } }
protected function _saveDecorators($row, $decorators) { // delete the old $gpdTable = new EngineBlock_Model_DbTable_GroupProviderDecorator(); $gpdoTable = new EngineBlock_Model_DbTable_GroupProviderDecoratorOption(); $gpdOld = $gpdTable->fetchAll($gpdTable->select("id")->where("group_provider_id = '{$row['id']}'")); try { // delete the old foreach ($gpdOld as $old) { $old->delete(); // cascade delete for options } // insert the new foreach ($decorators as $d) { // separate options $gpdoData = $d['options']; unset($d['options']); // insert decorator row $gpdRow = $gpdTable->createRow(); $gpdRow->setFromArray($d); $gpdId = $gpdRow->save(); // insert related options if (is_array($gpdoData)) { foreach ($gpdoData as $o) { $gpdoRow = $gpdoTable->createRow(); $gpdoRow->setFromArray($o); $gpdoRow->group_provider_decorator_id = $gpdId; $gpdoRow->save(); } } } } catch (Exception $ex) { // TODO: handle exception throw $ex; } }