Maison > Article > développement back-end > Analyse des opérations CURD et des opérations cohérentes dans la base de données du framework Laravel
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); }
Récupérer une seule ligne d'un tableau
$user = DB::table('users')->where('name', 'John')->first(); var_dump($user->name);
Récupérer une ligne à une seule colonne
$name = DB::table('users')->where('name', 'John')->pluck('name');
récupère une liste de valeurs de colonne
$roles = DB::table('roles')->lists('title');
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');
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();
Select sub Ajouter le phrase à une requête existante $query = DB::table('users')->select('name');
$users = $query->addSelect('age')->get();
where
$users = DB::table('users')->where('votes', '>', 100)->get();
OU
$users = DB::table('users')->where('votes', '>', 100)->orWhere('name', 'John')->get();
Où entre
$users = DB::table('users')->whereBetween('votes', array(1, 100))->get();
Où pas entre
$users = DB::table('users')->whereNotBetween('votes', array(1, 100))->get();
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();
Utiliser Where Null pour rechercher des enregistrements avec des valeurs non définies
$users = DB::table('users')->whereNull('updated_at')->get();
Trier par, regrouper par et avoir
$users = DB::table('users')->orderBy('name', 'desc')->groupBy('count')->having('count', '>', 100)->get();
Décalage et limite
$users = DB::table('users')->skip(10)->take(5)->get();
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();
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();
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('title', '<>', 'Admin'); }) ->get();La requête ci-dessus produira le SQL suivant :
select * from users where name = 'John' or (votes > 100 and title <> 'Admin') Exists Statements DB::table('users') ->whereExists(function($query) { $query->select(DB::raw(1)) ->from('orders') ->whereRaw('orders.user_id = users.id'); }) ->get();La requête ci-dessus produira le SQL suivant :
select * from userswhere exists ( select 1 from orders where orders.user_id = users.id )
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('users')->count(); $price = DB::table('orders')->max('price'); $price = DB::table('orders')->min('price'); $price = DB::table('orders')->avg('price'); $total = DB::table('users')->sum('votes');
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('users') ->select(DB::raw('count(*) as user_count, status')) ->where('status', '<>', 1) ->groupBy('status') ->get();
Incrémenter ou décrémenter la valeur d'une colonne
DB::table('users')->increment('votes'); DB::table('users')->increment('votes', 5); DB::table('users')->decrement('votes'); DB::table('users')->decrement('votes', 5);
Vous pouvez également spécifier des mises à jour de colonnes supplémentaires :
DB::table('users')->increment('votes', 1, array('name' => 'John'));Inserts
Insérer des enregistrements dans la table
DB::table('users')->insert( array('email' => 'john@example.com', 'votes' => 0) );
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('users')->insertGetId( array('email' => 'john@example.com', 'votes' => 0) );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('users')->insert(array( array('email' => 'taylor@example.com', 'votes' => 0), array('email' => 'dayle@example.com', 'votes' => 0), ));
Mises à jour
Mettre à jour les enregistrements dans une tableDB::table('users') ->where('id', 1) ->update(array('votes' => 1));5. Suppressions
Supprimer les enregistrements du tableau
DB::table('users')->where('votes', '<', 100)->delete();Supprimer les enregistrements du tableau Tous les enregistrements
DB::table('users')->delete();Supprimer une table
DB::table('users')->truncate();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('users')->whereNull('first_name'); $users = DB::table('users')->whereNull('last_name')->union($first)->get();
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('users')->where('votes', '>', 100)->sharedLock()->get();
DB::table('users')->where('votes', '>', 100)->lockForUpdate()->get();7. Requête en cache
Vous pouvez facilement mettre en cache les résultats de la requête à l'aide de mnémoniques :
$users = DB::table('users')->remember(10)->get();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('users')->cacheTags(array('people', 'authors'))->remember(10)->get();
Recommandations associées :
PHP Description des paramètres de CURL CURLOPTCe 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!