Maison > développement back-end > tutoriel php > Comment puis-je convertir une requête MySQL multi-instructions complexe en Laravel Eloquent ?

Comment puis-je convertir une requête MySQL multi-instructions complexe en Laravel Eloquent ?

Barbara Streisand
Libérer: 2024-10-30 13:48:02
original
615 Les gens l'ont consulté

How Can I Convert a Complex Multi-Statement MySQL Query to Laravel Eloquent?

Conversion d'une requête MySQL multi-instructions complexe en Laravel Eloquent

Cette requête contient une série d'instructions, notamment GROUP_CONCAT, SET, PREPARE, EXECUTE et DEALLOCATE, qui peuvent être difficiles à convertir en Laravel Eloquent. Décomposons-le étape par étape.

Premièrement, Laravel ne prend pas en charge les instructions préparées comme PREPARE et EXECUTE. Cependant, nous pouvons utiliser des requêtes brutes pour exécuter chacune de ces instructions individuellement.

<code class="php">DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();
DB::statement('SET @sql = CONCAT(...)');
DB::statement('DEALLOCATE PREPARE stmt');</code>
Copier après la connexion

Ensuite, nous devons récupérer le résultat de l'instruction SET. Puisqu'il s'agit d'une valeur scalaire, nous pouvons utiliser selectOne() pour la récupérer.

<code class="php">$sql = DB::selectOne('select @sql')->{'@sql'};</code>
Copier après la connexion

Enfin, nous pouvons utiliser la chaîne SQL récupérée dans notre requête Eloquent.

<code class="php">ItemDetails::select('item_number', DB::raw('SUM(quantity) as total_quantity'))
    ->selectRaw($sql)
    ->groupBy('item_number')
    ->get();</code>
Copier après la connexion

Ce code exécutera la requête MySQL multi-instructions à l'aide de requêtes brutes et récupérera les résultats attendus.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal