Analyse des opérations CURD et des opérations cohérentes dans la base de données du framework Laravel

不言
Libérer: 2023-04-01 06:24:02
original
1574 Les gens l'ont consulté

Cet article présente principalement le résumé des opérations CURD, des opérations cohérentes et des opérations en chaîne de la base de données du framework Laravel. Cet article contient un grand nombre de méthodes courantes d'opérations de base de données. Les amis dans le besoin peuvent s'y référer

1. Sélections

Récupérer toutes les lignes d'un tableau

$users = DB::table('users')->get();
foreach ($users as $user)
{
var_dump($user->name);
}
Copier après la connexion

Récupérer une seule ligne d'un tableau

$user = DB::table('users')->where('name', 'John')->first();
var_dump($user->name);
Copier après la connexion

Récupérer une ligne à une seule colonne

$name = DB::table('users')->where('name', 'John')->pluck('name');
Copier après la connexion

récupère une liste de valeurs de colonne

$roles = DB::table('roles')->lists('title');
Copier après la connexion

Ceci La méthode renverra un en-tête de tableau. Vous pouvez également spécifier une colonne de clé personnalisée pour renvoyer le tableau

$roles = DB::table('roles')->lists('title', 'name');
Copier après la connexion

Spécifier une clause Select

$users = DB::table('users')->select('name', 'email')->get();
 $users = DB::table('users')->distinct()->get();
 $users = DB::table('users')->select('name as user_name')->get();
Copier après la connexion

Select sub Ajouter le phrase à une requête existante $query = DB::table('users')->select('name');

$users = $query->addSelect('age')->get();
Copier après la connexion

where

$users = DB::table('users')->where('votes', '>', 100)->get();
Copier après la connexion

OU

$users = DB::table('users')->where('votes', '>', 100)->orWhere('name', 'John')->get();
Copier après la connexion

Où entre

$users = DB::table('users')->whereBetween('votes', array(1, 100))->get();
Copier après la connexion

Où pas entre

$users = DB::table('users')->whereNotBetween('votes', array(1, 100))->get();
Copier après la connexion

Où dans un tableau

$users = DB::table('users')->whereIn('id', array(1, 2, 3))->get();
$users = DB::table('users')->whereNotIn('id', array(1, 2, 3))->get();
Copier après la connexion

Utiliser Where Null pour rechercher des enregistrements avec des valeurs non définies

$users = DB::table('users')->whereNull('updated_at')->get();
Copier après la connexion

Trier par, regrouper par et avoir

$users = DB::table('users')->orderBy('name', 'desc')->groupBy('count')->having('count', '>', 100)->get();
Copier après la connexion

Décalage et limite

$users = DB::table('users')->skip(10)->take(5)->get();
Copier après la connexion

Connexion 2.

Jointures

Le générateur de requêtes peut également être utilisé pour écrire des instructions de jointure. Jetez un œil à l'exemple suivant :

Instruction de jointure de base

DB::table('users')
  ->join('contacts', 'users.id', '=', 'contacts.user_id')
  ->join('orders', 'users.id', '=', 'orders.user_id')
  ->select('users.id', 'contacts.phone', 'orders.price')
  ->get();
Copier après la connexion

Instruction de jointure gauche

DB::table('users')
  ->leftJoin('posts', 'users.id', '=', 'posts.user_id')
  ->get();
  DB::table('users')
  ->join('contacts', function($join)
  {
  $join->on('users.id', '=', 'contacts.user_id')->orOn(...);
  })
  ->get();
  DB::table('users')
  ->join('contacts', function($join)
  {
  $join->on('users.id', '=', 'contacts.user_id')
  ->where('contacts.user_id', '>', 5);
  })
  ->get();
Copier après la connexion

3. Regroupement

Parfois, vous devrez peut-être créer des clauses Where plus avancées, telles que « existe » ou un regroupement de paramètres imbriqués. Le générateur de requêtes Laravel peut gérer ceux-ci : DB::table('users')

->where('name', '=', 'John')
->orWhere(function($query)
{
$query->where('votes', '>', 100)
->where(&#39;title&#39;, &#39;<>&#39;, &#39;Admin&#39;);
})
->get();
Copier après la connexion
La requête ci-dessus produira le SQL suivant :

select * from users where name = &#39;John&#39; or (votes > 100 and title 
<> &#39;Admin&#39;)
  Exists Statements
  DB::table(&#39;users&#39;)
  ->whereExists(function($query)
  {
  $query->select(DB::raw(1))
  ->from(&#39;orders&#39;)
  ->whereRaw(&#39;orders.user_id = users.id&#39;);
  })
  ->get();
Copier après la connexion
La requête ci-dessus produira le SQL suivant :

select * from userswhere exists (
select 1 from orders where orders.user_id = users.id
)
Copier après la connexion

4. Agrégation

Le générateur de requêtes fournit également diverses méthodes d'agrégation telles que les statistiques, max, min, avg et sum.

Utilisation de méthodes d'agrégation

$users = DB::table(&#39;users&#39;)->count();
$price = DB::table(&#39;orders&#39;)->max(&#39;price&#39;);
$price = DB::table(&#39;orders&#39;)->min(&#39;price&#39;);
$price = DB::table(&#39;orders&#39;)->avg(&#39;price&#39;);
$total = DB::table(&#39;users&#39;)->sum(&#39;votes&#39;);
Copier après la connexion

Expressions brutes

Parfois, vous devrez peut-être utiliser une requête d'expression brute. Ces expressions seront injectées dans la chaîne de requête, veillez donc à ne pas créer de points d'injection SQL ! Pour créer une expression brute, vous pouvez utiliser DB:rawmethod:

Utilisation d'une expression brute

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

Incrémenter ou décrémenter la valeur d'une colonne

DB::table(&#39;users&#39;)->increment(&#39;votes&#39;);
DB::table(&#39;users&#39;)->increment(&#39;votes&#39;, 5);
DB::table(&#39;users&#39;)->decrement(&#39;votes&#39;);
DB::table(&#39;users&#39;)->decrement(&#39;votes&#39;, 5);
Copier après la connexion

Vous pouvez également spécifier des mises à jour de colonnes supplémentaires :

DB::table(&#39;users&#39;)->increment(&#39;votes&#39;, 1, array(&#39;name&#39; => &#39;John&#39;));
Copier après la connexion
Inserts

Insérer des enregistrements dans la table

DB::table(&#39;users&#39;)->insert(
array(&#39;email&#39; => &#39;john@example.com&#39;, &#39;votes&#39; => 0)
);
Copier après la connexion

Insérer des enregistrements dans une table avec un ID automatiquement augmenté

Si table , ayez un champ id à incrémentation automatique. Utilisez insertGetId pour insérer un enregistrement et récupérer l'identifiant :

$id = DB::table(&#39;users&#39;)->insertGetId(
array(&#39;email&#39; => &#39;john@example.com&#39;, &#39;votes&#39; => 0)
);
Copier après la connexion
Remarque : lors de l'utilisation de la méthode insertGetId de PostgreSQL, il est prévu que la colonne à incrémentation automatique le fasse. être nommé "id".

Plusieurs enregistrements sont insérés dans la table

DB::table(&#39;users&#39;)->insert(array(
array(&#39;email&#39; => &#39;taylor@example.com&#39;, &#39;votes&#39; => 0),
array(&#39;email&#39; => &#39;dayle@example.com&#39;, &#39;votes&#39; => 0),
));
Copier après la connexion

Mises à jour

Mettre à jour les enregistrements dans une table< 🎜. >

DB::table(&#39;users&#39;)
->where(&#39;id&#39;, 1)
->update(array(&#39;votes&#39; => 1));
Copier après la connexion
5. Suppressions

Supprimer les enregistrements du tableau

DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;<&#39;, 100)->delete();
Copier après la connexion
Supprimer les enregistrements du tableau Tous les enregistrements

DB::table(&#39;users&#39;)->delete();
Copier après la connexion
Supprimer une table

DB::table(&#39;users&#39;)->truncate();
Copier après la connexion
6. Unions

Générateur de requêtes également fournit un moyen rapide d'"union" deux requêtes :

La méthode unionAll fonctionne également, avec la même signature de méthode.
$first = DB::table(&#39;users&#39;)->whereNull(&#39;first_name&#39;);
  $users = 
DB::table(&#39;users&#39;)->whereNull(&#39;last_name&#39;)->union($first)->get();
Copier après la connexion

Verrouillage pessimiste

Le générateur de requêtes inclut des fonctionnalités de « verrouillage pessimiste » pour vous aider avec vos instructions SELECT. Pour exécuter une instruction SELECT "shared lock", vous pouvez utiliser la méthode sharedLock pour interroger :

Pour mettre à jour "lock" dans une instruction SELECT, vous pouvez utiliser la méthode lockForUpdate pour interroger :
DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;>&#39;, 
100)->sharedLock()->get();
Copier après la connexion

DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;>&#39;, 100)->lockForUpdate()->get();
Copier après la connexion
7. Requête en cache

Vous pouvez facilement mettre en cache les résultats de la requête à l'aide de mnémoniques :


Dans cet exemple, le résultat de la requête sera dix minutes mises en cache. Lorsque les résultats de la requête sont mis en cache, ils ne sont pas exécutés sur la base de données et les résultats seront chargés à partir du pilote de cache par défaut spécifié par votre application. Si vous utilisez un pilote prenant en charge la mise en cache, vous pouvez également ajouter des balises au cache :
$users = DB::table(&#39;users&#39;)->remember(10)->get();
Copier après la connexion

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun pour en savoir plus. contenu, veuillez faire attention à PHP Chinese net !
$users = DB::table(&#39;users&#39;)->cacheTags(array(&#39;people&#39;, &#39;authors&#39;))->remember(10)->get();
Copier après la connexion

Recommandations associées :

PHP Description des paramètres de CURL CURLOPT


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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!