Frage

Entschuldigung für mein Englisch

Ich möchte zwei Tische

Rechnungen

  • Ausweis
  • Benutzer-ID
  • Name
  • hergestellt in
  • update_at

Rechnungspositionen

  • Ausweis
  • Rechnungs-ID
  • Titel
  • createad_at
  • update_at

Modelle

class Invoices extends eloquent{
   public function invoicesitems(){
       return $this->hasMany('Invoicesitem');
   }
}

class Invoicesitems extends eloquent{
   public function invoices(){
       return $this->belongsTo('Invoice');
   }
}

Nun, um die Posten meiner Rechnungen zu aktualisieren?Beispiel: Meine Rechnungen umfassen 5 Artikel, ich muss auf 10 Artikel aktualisiert werden

Zuerst alle Posten meiner Rechnungen löschen und neue einfügen???

$invoices = Invoices::findOrFail($id);
$dataupdate = array(
  'user_id' => Input::get('user'),
  'name' => Input::get('name'),
);
$invoices->fill($dataupdate);
$invoices->save();

//Ok, Rechnungen aktualisieren, wie aktualisiere ich nun Artikel?Danke.

War es hilfreich?

Lösung

Wenn Ihre Geschäftslogik dies zulässt, können Sie die Rechnungspositionen einfach ersetzen.

$invoice = Invoices::findOrFail($id);
$dataupdate = array(
    'user_id' => Input::get('user'),
    'name' => Input::get('name'),
 );
 $invoice->update($dataupdate);

 // replace invoice items
 $invoice->invoicesitems()->delete();
 $invoice->invoicesitems()->create($invoiceItems);

Notiz!Das ist eine ganz klare Lösung.Sie können sich verbessern, indem Sie verwenden insert() Methode statt create() für Batch-Einfügung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top