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.