2016-04-19 7 views
1

Hallo, ich versuche, mehrere Zeilen gleichzeitig in eine Datenbank einzufügen. Momentan kann ich immer nur eine Zeile speichern. Ich habe folgendes gemacht:Wie fügt man Bulk-Daten gleichzeitig in Laravel ein?

public function addNewPriceRevision($data){ 
$PriceRevision=new ProductPriceRevision(
    [ 
     'product_id'=>$data->product_id, 
     'invent_price'=>$data->invent_price, 
     'revised_price'=>$data->revised_price, 
     'effective_date'=>$data->effective_date, 
     'deleted'=>$data->deleted, 
     'remark'=>$data->remark, 
     'user'=>$data->user, 
     'date'=>$data->updated_at, 

    ] 
    ); 
$PriceRevision->save(); 
return Common::getJsonResponse(true, 'new price revision created successfully!', 200); 
} 
+0

Bitte überprüfen Sie diese Antwort http://stackoverflow.com/questions/12702812/bulk-insertion-in-laravel-using- eloquent-orm – Sajeewa

Antwort

0

Versuchen Sie, alle Objekte zu konvertieren auf Arrays und dann ein Array aus mehreren Arrays erstellen:

$data = array($data1->toArray(), $data2->toArray()); 

Wenn Sie Zeitstempel hinzufügen müssen, müssen Sie es manuell tun:

$date = date('Y-m-d H:i:s'); 

$data1 = $data1->toArray(); 
$data1['created_at'] = $date; 
$data1['updated_at'] = $date; 

$data2 = $data2->toArray(); 
$data2['created_at'] = $date; 
$data2['updated_at'] = $date; 

$data = array($data1, $data2); 

Dann könnten Sie mass assignment Funktion verwenden, um Zeilen zu erstellen:

ProductPriceRevision::create($data); 

Und vergessen Sie nicht $fillable Array innerhalb ProductPriceRevision Modell zu füllen:

protected $fillable = [ 
    'product_id', 
    'invent_price', 
    'revised_price', 
    'effective_date', 
    'deleted', 
    'remark', 
    'user', 
    'updated_at' 
]; 
Verwandte Themen