Es gibt keine Möglichkeit, dies in einer Abfrage zu tun (es sei denn, Sie verwenden Laravel 5.7), aber ich bin auf dasselbe Problem gestoßen und wollte sicherstellen, dass ich weiterhin eine bestimmte Auswahl verwenden kann, die ich mit dem QueryBuilder erstellt habe.
Was Sie also tun könnten, um die Dinge halbwegs sauber zu halten und Funktionen wiederzuverwenden, die zuvor eine select-Anweisung erstellt haben, ist Folgendes:
/**
* 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 AKTUALISIEREN
Ab Laravel 5.7.17 können Sie ->insertUsing() verwenden. Siehe hier für Details. Danke @Soulriser für den Hinweis.
Die obige Abfrage würde also so aussehen:
DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);