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

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

WBOY
WBOYoriginal
2022-02-18 11:17:275289parcourir

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();

Exemple 2 :

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

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

 ; 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")
);

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

Déclaration:
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