在 Laravel 中创建 Insert...Select 语句
在数据库操作领域,Insert...Select 语句执行双重操作向表中插入数据的同时引用另一个表中的数据的功能。 Laravel 强大的 Eloquent ORM 和查询生成器提供了构建此类查询的有效方法。
使用 Laravel 进行查询转换
要将提供的 SQL 查询转换为 Laravel,我们不能使用由于 Laravel 当前版本的限制,单个统一查询。但是,我们可以通过将查询分为两部分来实现所需的功能:
第 1 部分:创建 Laravel Select 查询
首先使用以下命令创建 Laravel Select 查询Eloquent ORM 或查询生成器。此查询应类似于原始 SQL 查询的选择部分:
<code class="php">$select = User::where(...) ->where(...) ->whereIn(...) ->select(['email', 'moneyOwing']);</code>
第 2 部分:使用 Laravel 查询生成器插入数据
现在,您需要使用 Laravel 的查询生成器用于构建查询的插入部分。
<code class="php">$insertQuery = 'INSERT into user_debt_collection (email, dinero) ' . $select->toSql(); \DB::insert($insertQuery, $select->getBindings());</code>
在上面的代码中,我们使用 $insertQuery 手动构造插入查询,然后利用 DB::insert() 执行查询,为其提供查询字符串和查询绑定。
Laravel 5.7 更新
Laravel 5.7.17引入了 ->insertUsing() 方法,它将选择和插入查询的功能合并到一个方法中。
<code class="php">DB::table('user_debt_collection')->insertUsing(['email', 'dinero'], $select);</code>
这个简化的方法简化了创建 Insert 的过程。 ..Laravel 中的 Select 语句。
以上是如何在 Laravel 中高效地创建 Insert...Select 语句?的详细内容。更多信息请关注PHP中文网其他相关文章!