Maison > Article > base de données > Comment puis-je créer efficacement des instructions Insert...Select dans Laravel ?
Création d'instructions Insert...Select dans Laravel
Dans le domaine de la manipulation de bases de données, l'instruction Insert...Select effectue un double fonction d'insertion de données dans une table tout en référençant simultanément les données d'une autre table. L'ORM Eloquent robuste et le générateur de requêtes de Laravel offrent des moyens efficaces de construire de telles requêtes.
Conversion de requêtes à l'aide de Laravel
Pour convertir la requête SQL fournie en Laravel, nous ne pouvons pas utiliser un requête unifiée unique en raison des limitations de la version actuelle de Laravel. Cependant, nous pouvons obtenir la fonctionnalité souhaitée en divisant la requête en deux parties :
Partie 1 : Création d'une requête Laravel Select
Commencez par créer une requête Laravel Select en utilisant l'ORM Eloquent ou le générateur de requêtes. Cette requête doit ressembler à la partie sélectionnée de votre requête SQL d'origine :
<code class="php">$select = User::where(...) ->where(...) ->whereIn(...) ->select(['email', 'moneyOwing']);</code>
Partie 2 : Insertion de données à l'aide du générateur de requêtes Laravel
Maintenant, vous devez utiliser le générateur de requêtes Laravel. Query Builder pour construire la partie d'insertion de votre requête.
<code class="php">$insertQuery = 'INSERT into user_debt_collection (email, dinero) ' . $select->toSql(); \DB::insert($insertQuery, $select->getBindings());</code>
Dans le code ci-dessus, nous construisons manuellement l'insertion requête en utilisant $insertQuery puis utilisez DB::insert() pour exécuter la requête, en lui fournissant à la fois la chaîne de requête et les liaisons de requête.
Mise à jour pour Laravel 5.7
Laravel 5.7.17 a introduit le ->insertUsing(), qui combine les fonctionnalités des requêtes de sélection et d'insertion en une seule méthode.
<code class="php">DB::table('user_debt_collection')->insertUsing(['email', 'dinero'], $select);</code>
Cette méthode simplifiée rationalise le processus de création d'insertion... Sélectionnez les instructions dans Laravel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!