Re: DB_DataObjects - Duplication of many related records
| From: | Alan Knowles | Date: | Tue, 27 Jan 2004 15:58:58 +0000 |
| Subject: | Re: DB_DataObjects - Duplication of many related records | ||
| References: | 1 | Groups: | php.pear.general php.pear.general |
| Request: | Send a blank email to pear-general+get-10387@lists.php.net to get a copy of this message | ||
Comments in line...
Regards
Alan
David Dahl wrote:
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); Actually you can just give it $getForm here - setFrom accepts objects and arrays...
$newFormId = $newForm->insert(); //does the auto_increment take precedence here?if the table has an autoincrement column - it will call mysql_last_insert_id .. or whatever it was :) You can not assign values to the key/autoinc/sequence columns using setFrom...
$getSections = new DataObjects_Section; $getSections->keyfformid = "$_REQUEST[id]"; $number_of_rows = $getSections->find(); while ($getSections->fetch){ fetch() might be better than fetch....
$sectionData = get_object_vars($getSections);
//duplicate section with new keyfformid
$newSection = new DataObjects_Section;
$newSection->keyfformid = $newFormId;
$newSection->setFrom($sectionData);
see comment above - you can just give it $getSections
$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