Няма начин да направя това с една заявка (освен ако не сте на Laravel 5.7), но попаднах на същия проблем и исках да се уверя, че мога да продължа да използвам определен избран, който изграждам с QueryBuilder.
И така, това, което бихте могли да направите, за да запазите нещата наполовина чисти и да използвате повторно функционалност, която е изградила преди това оператор select, е следното:
/**
* 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);
АКТУАЛИЗИРАНЕ на Laravel 5.7
От Laravel 5.7.17 можете да използвате ->insertUsing(). Вижте тук за детайли. Благодаря ви @Soulriser, че посочи това.
Така че горната заявка ще изглежда така:
DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);