DB_DataObjects - Duplication of many related records
| From: | David Dahl | Date: | Tue, 27 Jan 2004 15:24:10 +0000 |
| Subject: | DB_DataObjects - Duplication of many related records | ||
| Groups: | php.pear.general | ||
| Request: | Send a blank email to pear-general+get-10384@lists.php.net to get a copy of this message | ||
Hi:
I have an app that needs at times for many related rows to be duplicated with new foreign keys, etc... I have not tested this yet, and wanted some feedback on my methods. I am using MySQL and with "auto_increment"... Will auto_increment work here:
<?php
$getForm = new DataObjects_Form;
$getForm->keypid = "$_REQUEST[id]";
$number_of_rows = $getForm->find();
$formData = get_object_vars($getForm);
$newForm = new DataObjects_Form;
$newForm->setFrom($formData);
$newFormId = $newForm->insert();
//does the auto_increment take precedence here?
$getSections = new DataObjects_Section;
$getSections->keyfformid = "$_REQUEST[id]";
$number_of_rows = $getSections->find();
while ($getSections->fetch){
$sectionData = get_object_vars($getSections);
//duplicate section with new keyfformid
$newSection = new DataObjects_Section;
$newSection->keyfformid = $newFormId;
$newSection->setFrom($sectionData);
$newSectionId = $newSection->insert();
//get and duplication form_fields and select_item
$getFormField = new DataObjects_Form_field;
$getFormField->keyfsectionid = $sectionData[keypid];
$number_of_rows = $getFormField->find();
while($getFormField->fetch()){
//pull all fields - duplicate, look for select_item rows and duplicate
$formFieldData = get_object_vars($getFormField);
$newFormField = new DataObjects_Form_field;
$newFormField->keyfsectionid = $newSectionId;
$newFormField->setFrom($formFieldData);
$newFormFieldId = $newFormField->insert();
//look for select_item rows and duplicate
$getSelectItem = new DataObjects_Select_item;
$getSelectItem->keyffieldid = $formFieldData[keypid];
$number_of_rows = $getSelectItem->find();
while($getSelectItem->fetch()){
$selectItemData = get_object_vars($getSelectItem);
$newSelectItem = new DataObjects_Select_item;
$newSelectItem->keyffieldid = $newFormFieldId;
$newSelectItem->setFrom($selectItemData);
$newSelectItemId = $newSelectItem->insert();
}
}
}
?>
Best Regards,
David