Re: Re: DB_DataObjects - Duplication of many related records
| From: | David Dahl | Date: | Tue, 27 Jan 2004 19:47:48 +0000 |
| Subject: | Re: Re: DB_DataObjects - Duplication of many related records | ||
| References: | 1 2 | Groups: | php.pear.general |
| Request: | Send a blank email to pear-general+get-10394@lists.php.net to get a copy of this message | ||
Thanks! I am amazed at how fast i can get things done with DB_DataObjects!!!
On Jan 27, 2004, at 9:58 AM, Alan Knowles wrote:
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....see comment above - you can just give it $getSections$sectionData = get_object_vars($getSections); //duplicate section with new keyfformid $newSection = new DataObjects_Section; $newSection->keyfformid = $newFormId; $newSection->setFrom($sectionData);-- PEAR General Mailing List (http://pear.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php$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