1つのクエリでこれを行う方法はありません(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);
Laravel5.7を更新
Laravel 5.7.17以降、-> insertUsing()を使用できます。 こちら をご覧ください。 詳細については。これを指摘してくれてありがとう@Soulriser。
したがって、上記のクエリは次のようになります。
DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);