Laravel 中使用 Insert...Select 高效插入数据
Laravel 的查询转换
要将提供的 SQL 查询转换为 Laravel 表达式,了解 Laravel 5.6 及更早版本缺乏对 Insert...Select 操作的直接支持至关重要。这意味着直接转换是不可能的。
Laravel 中的替代方法
但是,有一个解决方法可以让您实现所需的结果。您可以将其分为两个步骤,而不是尝试单个查询:
示例代码:
<code class="php">// Step 1: Generate the Select query $select = User::where(...) ->where(...) ->whereIn(...) ->select(array('email','moneyOwing')); // Step 2: Get binding parameters $bindings = $select->getBindings(); // Step 3: Construct raw SQL insert query $insertQuery = 'INSERT into user_debt_collection (email,dinero) ' . $select->toSql(); // Step 4: Execute the insert \DB::insert($insertQuery, $bindings);</code>
Laravel 5.7 更新
Laravel 5.7 引入了 ->insertUsing() 方法,提供直接支持插入...选择。前面的示例将简化为:
<code class="php">DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);</code>
以上是如何在 Laravel 中使用 `Insert...Select` 高效插入数据?的详细内容。更多信息请关注PHP中文网其他相关文章!