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

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

Patricia Arquette
Libérer: 2024-10-26 04:29:31
original
183 Les gens l'ont consulté

How can I convert a MySQL multi-statement query to Laravel Eloquent?

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

Considérez la requête MySQL suivante :

SELECT <br> GROUP_CONCAT(DISTINCT</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">CONCAT(
  'ifnull(SUM(case when location_code = ''',
  location_code ,
  ''' then quantity end),0) AS `',
  location_code , '`'
)
Copier après la connexion

) INTO @sql
FROM
item_details;
SET @sql = CONCAT('SELECT item_number,SUM(quantity) as "total_quantity", ', @sql, '

              FROM item_details
               GROUP BY item_number');
Copier après la connexion

PREPARE stmt FROM @sql;
EXECUTE stmt;

DEALLOCATE PREPARE stmt;

Le défi réside dans la conversion de cette requête en Laravel Eloquent, notamment en considérant les différentes instructions : PREPARE, EXECUTE, SET et DEALLOCATE.

Solution :

La conversion est en grande partie implique des requêtes brutes :

DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();<br> DB::statement('SET @sql = CONCAT(...)');<br>DB::statement('PREPARE stmt FROM @sql');<br>DB::statement('EXECUTE stmt'); <br>DB::statement('DEALLOCATE PREPARE stmt');<br>

Voici une implémentation plus détaillée :

DB::table( 'item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();<br>$sql = DB::selectOne('select @sql')->{' @sql'};<br>ItemDetails::select('item_number', DB::raw('SUM(quantity) as total_quantity'))</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">->selectRaw($sql)
->groupBy('item_number')
->get();
Copier après la connexion

Cette approche gère efficacement la conversion de la requête MySQL d'origine en Laravel Eloquent, en utilisant une combinaison de requêtes brutes et de méthodes Eloquent.

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
Article précédent:Comment stocker les noms de fichiers et les données de formulaire ensemble lors du téléchargement d'images avec PHP ? Article suivant:Comment améliorer la conversion JPEG à partir d'un PDF avec PHP et ImageMagick pour une qualité et une taille optimales ?
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
Derniers numéros
Rubriques connexes
Plus>
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal