Không có cách nào để thực hiện điều này trong một truy vấn (trừ khi bạn đang sử dụng Laravel 5.7), tuy nhiên, tôi đã gặp phải vấn đề tương tự và muốn đảm bảo rằng tôi có thể tiếp tục sử dụng một lựa chọn nhất định mà tôi xây dựng bằng QueryBuilder.
Vì vậy, những gì bạn có thể làm, để giữ cho mọi thứ sạch sẽ một nửa và sử dụng lại chức năng đã tạo một câu lệnh select trước đây, là:
/**
* Wherever your Select may come from
**/
$select = User::where(...)
->where(...)
->whereIn(...)
->select(array('email','moneyOwing'));
/**
* get the binding parameters
**/
$bindings = $select->getBindings();
/**
* now go down to the "Network Layer"
* and do a hard coded select
*/
$insertQuery = 'INSERT into user_debt_collection (email,dinero) '
. $select->toSql();
\DB::insert($insertQuery, $bindings);
CẬP NHẬT Laravel 5.7
Kể từ Laravel 5.7.17, bạn có thể sử dụng -> insertUsing (). Xem tại đây để biết chi tiết. Cảm ơn bạn @Soulriser đã chỉ ra điều này.
Vì vậy, truy vấn trên sẽ giống như sau:
DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);