Maison > Article > développement back-end > Apprentissage Laravel - exemple de partage de code pour les opérations de base de données et les constructeurs de requêtes
en interne. La méthode délègue l'accès aux méthodes membresRécemment, l'éditeur étudie ce qui est connu comme le meilleur framework au monde – Laravel. En fait, le framework d'apprentissage, c'est aussi l'idée de framework d'apprentissage ! Je souhaite enregistrer certaines de mes expériences d'apprentissage de Laravel sur mon blog. Vous êtes invités à suivre mes autres blogs et petits livres Github pour communiquer entre eux !
Version : Laravel 5.2
pour exécuter directement la requête SQL, et l'autre consiste à utiliser la méthode statique de la classe Model (en fait aussi l'implémentation de Facade, qui utilise l'accès statique pour accéder au modèle et utilise la magie
Base de données : mysql 5.7
PHP7.1 L'une consiste à utiliser la méthode statique de l'objet d'apparence
, vous pouvez également utiliser la liaison nommée DB
<.>callStatic
Obtenir toutes les colonnes de données de la table de données#
$results = DB::select('select * from users where id = ?', [1]);foreach ($results as $res) { echo $res->name; }
StdClass
Si vous n'avez besoin que de la valeur d'une colonne, vous pouvez utiliser la méthode value pour obtenir directement la valeur d'une seule colonne
$results = DB::select('select * from users where id = :id', ['id' => 1]);Trouver le colonne de données en blocs de la table de donnéesCette méthode est utilisée pour les opérations avec une grande quantité de données dans la table de données, et chaque fois que le résultat est obtenu Concentrez-vous sur la suppression d'une partie, utilisez la fonction de fermeture pour traitez-le, puis traitez la partie suivante. Cette commande est généralement utilisée dans le programme de ligne de commande Artisan pour traiter de grandes quantités de données
$users = DB::table('users')->get(); foreach ($users as $user) { var_dump($user->name); }Dans la fonction de fermeture, si , le traitement ultérieur s'arrêtera Interroger la liste d'une certaine colonne de la table de données #
$user = DB::table('users')->where('name', 'John')->first(); echo $user->name;
Par exemple, nous voulons interroger toutes les
valeurs de champ$email = DB::table('users')->where('name', 'John')->value('email');
DB::table('users')->chunk(100, function($users){ foreach ($users as $user) { // } });Le premier paramètre est la colonne à interroger, et le deuxième paramètre est la clé de chaque colonne
false
, etc.title
$titles = DB::table('roles')->pluck('title');foreach ($titles as $title) { echo $title; }Spécifiez les conditions de requête sélectionnées
pluck
Requête les colonnes spécifiées#
Collection pluck( string $column, string|null $key = null)
Si vous avez spécifié select, mais que vous souhaitez ajouter à nouveau des champs, utilisez la méthode addSelect
$roles = DB::table('roles')->pluck('title', 'name');foreach ($roles as $name => $title) { echo $title; }
count,max,min,avg,sum
Utiliser l'expression native
$users = DB::table('users')->count(); $price = DB::table('orders')->max('price'); $price = DB::table('orders')->where('finalized', 1)->avg('price');#L'utilisation de la méthode
peut injecter le fragment SQL requis dans la requête, mais cette méthode n'est pas recommandée si elle est mal utilisée, l'injection SQL. peut se produire
$users = DB::table('users')->select('name', 'email as user_email')->get();
Opération de jointure
$query = DB::table('users')->select('name');$users = $query->addSelect('age')->get();Inner Join#Utiliser join pour effectuer une opération de jointure interne Le premier paramètre de cette fonction est le nom de la table à utiliser. être connecté, et les autres paramètres spécifient les contraintes de connexion.
$users = DB::table('users')->distinct()->get();
Left Join# Utilisez la méthode leftJoin pour effectuer une opération de jointure à gauche, les paramètres sont les mêmes que join $users =
DB::raw
Méthode de jointure avancée#
$users = DB::table('users') ->select(DB::raw('count(*) as user_count, status')) ->where('status', '<>', 1) ->groupBy('status') ->get();Si les contraintes de la méthode de jointure sont plus complexes, vous pouvez utiliser une fonction de fermeture pour les spécifier
Si vous souhaitez utiliser une colonne valeurs à comparer avec le tableau spécifié dans les contraintes de jointure, vous pouvez utiliser les méthodes Where et OrWhere
Opération Union$users = DB::table('users') ->join('contacts', 'users.id', '=', 'contacts.user_id') ->join('orders', 'users.id', '=', 'orders.user_id') ->select('users.*', 'contacts.phone', 'orders.price') ->get();
Pour utiliser l'opération Union, vous pouvez d'abord créer une requête , puis utilisez la méthode union pour lier la deuxième requête
DB::table('users') ->leftJoin('posts', 'users.id', '=', 'posts.user_id') ->get();De même,
La méthode peut également être utilisée, avec les mêmes paramètres que union.
Conditions de requête Where
<p style="margin-top: 7px;">DB::table('users')<br/> ->join('contacts', function ($join) {<br/> $join->on('users.id', '=', 'contacts.user_id')->orOn(...);<br/> })<br/> ->get();<br/></p>Conditions Where simples#Utilisez la méthode Where pour ajouter des conditions Where à la requête. Cette fonction nécessite généralement trois paramètres : nom de colonne, opérateur (n'importe lequel. Tous les opérateurs pris en charge par la base de données peuvent être utilisés), valeurs des colonnes.
DB::table('users') ->join('contacts', function ($join) { $join->on('users.id', '=', 'contacts.user_id') ->where('contacts.user_id', '>', 5); }) ->get();
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!