Der er ingen måde at gøre dette på i én forespørgsel (medmindre du er på Laravel 5.7), men jeg stødte på det samme problem og ville sikre mig, at jeg kan fortsætte med at bruge et bestemt udvalg, jeg bygger med QueryBuilder.
Så hvad du kunne gøre, for at holde tingene halvt så rene og genbruge funktionalitet, som har bygget et udvalgt statement før, er dette:
/**
* 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);
OPDATERING Laravel 5.7
Fra Laravel 5.7.17 kan du bruge ->insertUsing(). Se her for detaljer. Tak @Soulriser for at påpege dette.
Så ovenstående forespørgsel ville se sådan ud:
DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);