2015-04-18 23 views
59

Tôi có truy vấn sau đây:Làm thế nào để chèn nhiều hàng từ một truy vấn duy nhất sử dụng hùng hồn/thạo

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

và như mong đợi tôi nhận được kết quả sau:

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

Có một cách để sao chép kết quả trên vào một bảng khác sao cho bảng của tôi trông như thế này?

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

Tôi có vấn đề là $query có thể mong đợi bất kỳ số lượng hàng và để im không chắc chắn làm thế nào để lặp qua một số không rõ hàng.

Trả lời

128

Thực sự dễ dàng chèn hàng loạt vào Laravel bằng Eloquent hoặc trình tạo truy vấn.

Bạn có thể sử dụng phương pháp sau.

$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 

Trong trường hợp bạn đã có dữ liệu trong biến số $query.

+0

tôi đã cố gắng mà nhưng tiếc là nó công nhận kết quả của tôi như là một đối tượng và không phải là một mảng – Billy

+4

Sử dụng -> toArray() phương pháp trên bộ sưu tập đối tượng. –

+16

Nó không chèn dấu thời gian. –

3

sử dụng hùng biện

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

Model::insert($data); 
Các vấn đề liên quan