In meiner Anwendung habe ich ein Modell, das einzelne Werbebuchungen auf einem Bestellformular erfasst. Es kann eine unendliche Anzahl von ihnen geben. Sie sind durch einen Fremdschlüssel (msr_id) an ein "Eltern" -Modell gebunden.CakePHP: Daten in einer foreach-Schleife speichern
Manchmal möchte der Benutzer das Bestellformular kopieren, damit die Artikel nachbestellt werden können. Ich habe Probleme beim Kopieren der einzelnen Werbebuchungen in einen neuen Datensatz. Hier ist der Code in meinem Controller, der die Positionen ruft:
/*Get the MSR line items and build an array out of them. The
line items are tied to the main record by $orig['Msr']['id']*/
$this->loadModel('MsrLineItem');
$lines = $this->MsrLineItem->find('all', array('conditions'=>array('msr_id'=>$orig['Msr']['id'], 'MsrLineItem.deleted_record'=>0)));
Wenn ich $ Linien debuggen, es zeigt die beiden Positionen, die auf dem Bestellformular existiere ich zu kopieren bin versucht. Hier ist der Code in dem gleichen Controller, den ich versuche zu verwenden, um die Positionsdaten in den neuen Datensatz zu kopieren:
//Save the non-line item data first
if($newmsr = $this->Msr->save($new)) {
//Set the line item ID to the new record ID (from $newmsr)
$this->MsrLineItem->set('msr_id', $newmsr['Msr']['id']);
//Loop through the line items, saving each one to the new record
foreach($lines as $line) {
$newli['MsrLineItem']['quantity'] = $line['MsrLineItem']['quantity'];
$newli['MsrLineItem']['unit_of_meas'] = $line['MsrLineItem']['unit_of_meas'];
$newli['MsrLineItem']['description'] = $line['MsrLineItem']['description'];
$newli['MsrLineItem']['part_no'] = $line['MsrLineItem']['part_no'];
$newli['MsrLineItem']['unit_price'] = $line['MsrLineItem']['unit_price'];
$this->MsrLineItem->save($newli, 'msr_id');
}
$this->Session->setFlash(__('The MSR has been copied successfully.'));
$this->redirect(array('action' => 'edit', $newmsr['Msr']['id']));
Mein Problem ist, dass ich nur die letzte Position in der Schleife zu erfassen. Alle, die davor kommen, werden ignoriert. Wie kann ich alle Werbebuchungen erfassen?