Re: DB_DataObjects - Duplication of many related records

From: 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-10388@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


« previous php.pear.general (#10388) next »