2015-04-18 17 views
59

Ich habe die folgende Abfrage einfügen: ich folgendes ErgebnisWie mehrere Zeilen aus einer einzigen Abfrage mit beredten/fließend

$query = UserSubject::where('user_id', Auth::id())->select('subject_id')->get(); 

und wie erwartet erhalten:

[{"user_id":8,"subject_id":9},{"user_id":8,"subject_id":2}] 

Gibt es eine Möglichkeit von Kopieren Sie das obige Ergebnis in eine andere Tabelle, so dass meine Tabelle so aussieht?

ID|user_id|subject_id 
1 |8  |9 
2 |8  |2 

Das Problem, das ich habe ist, dass die $query beliebige Anzahl von Zeilen erwarten kann und so im nicht sicher, wie durch eine unbekannte Anzahl von Zeilen zu durchlaufen.

Antwort

128

Es ist wirklich einfach, eine Masseneinfügung in Laravel mit Eloquent oder dem Abfrage-Generator durchzuführen.

Sie können den folgenden Ansatz verwenden.

$data = array(
    array('user_id'=>'Coder 1', 'subject_id'=> 4096), 
    array('user_id'=>'Coder 2', 'subject_id'=> 2048), 
    //... 
); 

Model::insert($data); // Eloquent approach 
DB::table('table')->insert($data); // Query Builder approach 

In Ihrem Fall haben Sie bereits die Daten innerhalb des $query Variable.

+0

Ich habe das versucht, aber leider mein Ergebnis als Objekt es zu erkennen und kein Array – Billy

+4

Verwenden Sie die -> toArray() -Methode auf der Objektsammlung. –

+16

Es werden keine Zeitstempel eingefügt. –

3

mit Eloquent

$data = array(
    array('user_id'=>'Coder 1', 'subject_id'=> 4096), 
    array('user_id'=>'Coder 2', 'subject_id'=> 2048), 
    //... 
); 

Model::insert($data); 
Verwandte Themen