Laravel Query Constructeur gère efficacement les sous-questionnaires
] Lors de l'utilisation d'ORM éloquente pour récupérer des données à partir de sous-requêtes, les développeurs utilisent souvent tosql ()
et les requêtes natives en combinaison. Bien que cette méthode soit efficace, elle n'est pas assez intuitive. Voici une solution plus efficace:
par exemple, pour extraire le nombre de résultats de la sous-requête suivante:
SELECT COUNT(*)
FROM (
SELECT *
FROM abc
GROUP BY col1
) AS a;
Laravel nous permet de fusionner les requêtes natives en requêtes éloquentes en utilisant MergeBindings
. Tout d'abord, nous créons une instance de constructeur éloquent pour la sous-requête:
$sub = Abc::where(..)->groupBy(..);
Ensuite, nous utilisons db :: table
pour créer une nouvelle table qui fait référence à la sous-requête et définissez manuellement la liaison correspondante:
$count = DB::table( DB::raw("({$sub->toSql()}) as sub") )
->mergeBindings($sub->getQuery()) // 获取底层查询构造器
->count();
Cette approche garantit que la liaison correcte est appliquée à la requête fusionnée, ce qui donne le résultat que nous voulons sans effectuer manuellement les opérations de chaîne.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3