Maison > cadre php > Laravel > Quelle est l'utilisation de DB::raw dans Laravel ?

Quelle est l'utilisation de DB::raw dans Laravel ?

WBOY
Libérer: 2022-02-18 11:17:27
original
5261 Les gens l'ont consulté

Dans Laravel, la méthode "DB::raw()" est utilisée pour les requêtes SQL complexes. Cette méthode peut traiter l'ensemble de résultats interrogé comme une table temporaire, puis utiliser la syntaxe du générateur de requêtes de Laravel pour le traitement de la pagination. "DB::raw('fonction ou champ');".

Quelle est l'utilisation de DB::raw dans Laravel ?

L'environnement d'exploitation de cet article : système Windows 10, Laravel version 6, ordinateur Dell G3.

Quelle est l'utilisation de DB::raw dans Laravel ?

J'ai rencontré un problème dans le projet. Pour les requêtes SQL complexes, il est très gênant d'utiliser le constructeur de requêtes de Laravel. Diverses conditions de requête sont regroupées dans une longue liste. , ce qui est déroutant. Cela fait mal ; alors je veux utiliser des instructions SQL natives pour interroger, mais je ne peux pas utiliser la méthode de pagination paginate() de Laravel pour le moment, la méthode DB::raw() est pratique ! Le principe de la syntaxe est de traiter l'ensemble de résultats de votre requête comme une table temporaire, puis d'utiliser la syntaxe du générateur de requêtes de Laravel pour le traitement de la pagination

Exemple 1 :

$users = DB::table('users')
                   ->select(DB::raw('count(*) as user_count, status'))
                   ->where(&#39;status&#39;, &#39;<>&#39;, 1)
                   ->groupBy(&#39;status&#39;)
                   ->get();
Copier après la connexion

Exemple 2 :

 DB::table(&#39;someTable&#39;)
->selectRaw(&#39;count(*), min(some_field) as someMin, max(another_field) as someMax&#39;)
->get();
Copier après la connexion

Exemple 3 :

DB::table(&#39;someTable&#39;)->select(
array(
        DB::raw(&#39;min(some_field) as someMin&#39;),
        DB::raw(&#39;max(another_field) as someMax&#39;),
        DB::raw(&#39;COUNT(*) as `count`&#39;)
    )
)->get()
Copier après la connexion

 ; Exemple 4 :

SELECT 
  (CASE WHEN (gender = 1) THEN &#39;M&#39; ELSE &#39;F&#39; END) AS gender_text 
  FROM users;
$users = DB::table(&#39;users&#39;)
  ->select(DB::raw("
  name,
  surname,  
  (CASE WHEN (gender = 1) THEN &#39;M&#39; ELSE &#39;F&#39; END) as gender_text")
);
Copier après la connexion

【Recommandation associée :tutoriel vidéo laravel

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal