Cara menyisipkan beberapa baris dari satu kueri menggunakan fasih / lancar


143

Saya memiliki pertanyaan berikut:

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

dan seperti yang diharapkan saya mendapatkan hasil sebagai berikut:

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

Apakah ada cara menyalin hasil di atas ke tabel lain sehingga meja saya terlihat seperti ini?

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

Masalah yang saya miliki adalah bahwa $querydapat mengharapkan sejumlah baris dan jadi saya tidak yakin bagaimana untuk mengulangi melalui jumlah baris yang tidak diketahui.


kalau-kalau ada yang masih membutuhkannya: github.com/laravel/framework/issues/1295#issuecomment-193025045
4givN

Jawaban:


292

Sangat mudah untuk melakukan penyisipan massal di Laravel menggunakan Eloquent atau pembuat kueri.

Anda dapat menggunakan pendekatan berikut.

$data = [
    ['user_id'=>'Coder 1', 'subject_id'=> 4096],
    ['user_id'=>'Coder 2', 'subject_id'=> 2048],
    //...
];

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

Dalam kasus Anda, Anda sudah memiliki data dalam $queryvariabel.


7
Gunakan metode -> toArray () pada koleksi objek.
Kreshnik Hasanaj

35
Itu tidak memasukkan stempel waktu.
guy_fawkes

20
tambahkan 'Created_at' => date ('Ymd H: i: s'), 'modified_at' => date ('Ymd H: i: s') ke dalam array Anda. sumber: stackoverflow.com/a/26569967/1316842
JR Tan

8
Saya ingin tahu mengapa Laravel tidak memiliki sesuatu seperti 'createMany' untuk ini.
Abhishek

4
Bagaimana cara mengambil id?
Luvias

21

menggunakan Eloquent

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

Model::insert($data);

masukkan adalah metode pembuat kueri. Accessor dan mutators tidak akan bekerja dengan sisipan ini
Hassan Dad Khan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.