Maison > Article > développement back-end > Comment traduire des instructions MySQL complexes avec PREPARE, EXECUTE et DEALLOCATE en Laravel Eloquent ?
Laravel Eloquent fournit un mécanisme élégant pour exécuter des requêtes SQL à l'aide de code PHP expressif. Cependant, la conversion de requêtes MySQL complexes à plusieurs instructions peut être intimidante. Cet article vous guide dans la transformation de ces requêtes en Eloquent, en abordant spécifiquement les défis présentés par des instructions telles que PREPARE, EXECUTE, SET et DEALLOCATE.
Pour convertir la requête MySQL fournie, nous utiliserons principalement des requêtes brutes dans Eloquent. Voici la répartition :
DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get(); DB::statement('SET @sql = CONCAT(...)'); DB::statement('PREPARE stmt FROM @sql'); DB::statement('EXECUTE stmt'); DB::statement('DEALLOCATE PREPARE stmt');
En les convertissant en code Eloquent, nous obtenons :
$result = DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get(); $sql = DB::selectOne('select @sql')->{'@sql'}; $results = ItemDetails::select('item_number', DB::raw('SUM(quantity) as total_quantity'))->selectRaw($sql)->groupBy('item_number')->get();
Cette approche utilise une série de requêtes brutes pour obtenir le résultat souhaité. La requête initiale concatène le SQL souhaité dans une variable utilisateur @sql. Par la suite, PHP récupère cette variable à l'aide d'une requête distincte, puis construit une requête Eloquent pour exécuter l'instruction SQL finale, qui inclut le SQL concaténé.
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!