2016-07-14 5 views
0

Wenn ich ein Array von Werten habe ich möchte auf einen Masseneinsatz tun:Mutatoren funktionieren nicht auf Masse fügt

Item::insert([['price' => 1234.25], ['price' => 4321.75]]); 

Dann ist mein Mutatoren nicht Feuer:

public function setPriceAttribute($value) 
{ 
    $this->attributes['price'] = round($value, 2) * 100; 
} 

Es sei denn, Ich zerbreche jedes in eine create:

foreach ([['price' => 1234.25], ['price' => 4321.75]] as $new) 
    Item::create($new); 

Fehle ich etwas hier? Oder muss ich manuell round($value, 2) * 100 auf jeden Preiswert innerhalb des Arrays anwenden?

Ich habe eine Menge Datensätze einfügen, so dass eine Masseneinfügung am effizientesten auf der Datenbank ist.

Antwort

1

insert ist db und create ist eloquent. Verwenden Sie Item::create($new);, aber es müsste in einem foreach sein.

insert ist nicht beredt, aber Masse einfügen können - aber Zeitstempel Aktualisierung und die Arbeiten werden nicht hinzugefügt, usw.

So foreach, könnte hier die beste Wahl:

foreach ($news as $new) 
{ 
    Item::create($new); 
} 

Scheint So oder so wirst du unabhängig davon eine foreach machen müssen. Entweder mutieren ODER erstellen Sie die Datensätze. Wähle dein Gift.

Verwandte Themen