Maison >base de données >tutoriel mysql >Comment puis-je créer efficacement des instructions Insert...Select dans Laravel ?

Comment puis-je créer efficacement des instructions Insert...Select dans Laravel ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 06:43:02824parcourir

How can I create Insert...Select statements in Laravel efficiently?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn