1. Sélections
Récupérer toutes les lignes du tableau
$users = DB::table('users')->get(); foreach ($users as $user) { var_dump($user->name); }
Récupérer une seule ligne du tableau
$user = DB::table('users')->where('name', 'John')->first(); var_dump($user->name);
Récupérer les lignes d'une seule colonne
$name = DB::table('users')->where('name', 'John')->pluck('name');
Récupérer une liste de valeurs de colonnes
$roles = DB::table('roles')->lists('title');
Cette 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();
Ajouter la clause Select à une requête existante $query = DB ::table( 'users')->select('name');
$users = $query->addSelect('age')->get();
where
$users = DB::table('users')->where('votes', '>', 100)->get();
OR
$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();
Offset & Limit
$users = DB::table('users')->skip(10)->take(5)->get();
2. Connexion
Joins
Query Builder Peut également être utilisé pour écrire des instructions de connexion. 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();
Regroupement
Parfois, vous mai Il est nécessaire de créer des clauses Where plus avancées telles que « existe » ou des groupements 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, moy 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 un enregistrement dans une table avec un ID à incrémentation automatique
Si la table a un champ d'identifiant à 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, on s'attend à ce que la colonne à incrémentation automatique soit nommée "id".
Insérer plusieurs enregistrements dans la table
DB::table('users')->insert(array( array('email' => 'taylor@example.com', 'votes' => 0), array('email' => 'dayle@example.com', 'votes' => 0), ));
4 Mises à jour
Mettre à jour les enregistrements dans une table
DB::table('users') ->where('id', 1) ->update(array('votes' => 1));
5.
Supprimer les enregistrements du tableauDB::table('users')->where('votes', '<', 100)->delete();Supprimer tous les enregistrements du tableau
DB::table('users')->delete();Supprimer un tableau
DB::table('users')->truncate();Unions
Le générateur de requêtes fournit également un moyen rapide d'"union" deux requêtes :
$first = DB::table('users')->whereNull('first_name'); $users = DB::table('users')->whereNull('last_name')->union($first)->get();La méthode unionAll fonctionne également, avec la même signature de méthode. 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 :
DB::table('users')->where('votes', '>', 100)->sharedLock()->get();Pour mettre à jour "lock" dans une instruction SELECT, vous pouvez utiliser la méthode lockForUpdate pour interroger :
DB::table('users')->where('votes', '>', 100)->lockForUpdate()->get();VII , 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();Dans cet exemple, les résultats de la requête seront mis en cache pour dix minutes. 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('users')->cacheTags(array('people', 'authors'))->remember(10)->get();Pour plus d'articles liés aux opérations CURD de la base de données du framework Laravel et au résumé cohérent des opérations, veuillez faire attention au site Web PHP chinois !