Maison > base de données > tutoriel mysql > Comment sélectionner efficacement parmi les sous-requêtes à l'aide du générateur de requêtes de Laravel ?

Comment sélectionner efficacement parmi les sous-requêtes à l'aide du générateur de requêtes de Laravel ?

Linda Hamilton
Libérer: 2025-01-12 07:08:43
original
319 Les gens l'ont consulté

How to Efficiently Select from Subqueries Using Laravel's Query Builder?

Sélectionnez les données des sous-requêtes à l'aide du générateur de requêtes Laravel

Question : Récupérer la valeur d'un agrégat de comptage à partir d'une sous-requête SQL à l'aide d'Eloquent ORM.

Méthode initiale :

$sql = Abc::from('abc AS a')
    ->groupBy('col1')
    ->toSql();

$num = Abc::from(\DB::raw($sql))
    ->count();
Copier après la connexion

Cette approche nécessite la génération manuelle de sous-requêtes SQL, ce qui n'est pas idéal.

Meilleure solution :

Le générateur de requêtes Laravel ne dispose actuellement pas d'une méthode dédiée pour créer des sous-requêtes dans la clause FROM. Les instructions brutes doivent être utilisées manuellement, avec une bonne gestion des liaisons :

// 定义子查询
$sub = Abc::where(...)->groupBy(...); // Eloquent Builder 实例

// 创建主查询
$count = DB::table(DB::raw("({$sub->toSql()}) AS sub"))
    ->mergeBindings($sub->getQuery()) // 正确合并绑定
    ->count();
Copier après la connexion

Remarque : Les liaisons doivent être fusionnées dans le bon ordre. Si des conditions supplémentaires sont ajoutées après la fusion, l'ordre doit être ajusté pour garantir une liaison correcte.

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 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