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();
DB::table('users')->delete();
DB::table('users')->truncate();
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();
DB::table('users')->where('votes', '>', 100)->sharedLock()->get();
DB::table('users')->where('votes', '>', 100)->lockForUpdate()->get();
$users = DB::table('users')->remember(10)->get();
$users = DB::table('users')->cacheTags(array('people', 'authors'))->remember(10)->get();