đ SQL Builder
Introductionâ
Bow fourni un api liĂ© Ă la construction de requĂȘte. Avec la mĂ©thode table
permet de construire une requĂȘte sql
en se basant sur la nom de la table et retour une instance de Bow\Database\QueryBuilder::class
.
use Bow\Database\Database
$builder = Database::table('users');
// => Instance \Bow\Database\QueryBuilder::class
Vous pouvez aussi utiliser le helper table
:
$builder = table('users');
Sur l'instance de la QueryBuilder
de Bow, il y a plusieurs mĂ©thodes qui vont vous permettre de construire une requĂȘte SQL.
Par exemple la methode toSql
qui permet d'affichez la requĂȘte construite.
$builder->toSql();
// select * from `users`
RecupĂ©rĂ© les informationsâ
Pour recupérer les informations avec le builder, vous devez utiliser le méthode get
qui retourne une collection, first
qui lui retourne null
ou un objet stdclass
et last
qui se comporte comme first
sauf qu'il retourne plutĂŽt le dernier Ă©lĂ©ment du rĂ©sultat de l'exĂ©cution de la requĂȘte.
Exemple avec get
â
$builder = Database::table('users');
$users = $builder->get();
foreach ($users as $user) {
echo $user->name;
}
Notez que vous pouvez passer un tableau Ă
get
qui est une liste des colonnes de la projection comme ceci$builder->get(['name'])
.
Exemple avec first
â
$user = table('users')->first();
// Vide
is_null($user)
// Ok
echo $user->name;
Exemple avec last
â
$user = $builder->last();
Ajoutez des restrictionsâ
Restriction simpleâ
Avec le builder, vous pouvez ajouter des restrictions simple sur la construction de la requĂȘte SQL avec la mĂ©thode where
.
$users = table('users')->where('id', 1)->get();
$users = table('users')->where('id', '!=', 1)->get();
La clause ORâ
Vous pouvez enchainer la restriction en ajoutant un or
dans votre requĂȘte. La mĂ©thode orWhere
vous permet de faire cela:
$users = table('users')->where('id', 1)->orWhere('name', 'Papac')->get();
Vous pouvez voir le resultat de la construction de la requĂȘte avec la mĂ©thode toSql
.
$sql = table('users')->where('id', 1)->orWhere('id', 1)->toSql();
// => select * from `users` where id = 1 or id = 3;
Clauses additionnellesâ
whereNull / whereNotNullâ
La méthode whereNull
vérifie que la valeur de la colonne donnée est NULL
:
$users = table('users')->whereNull('name')->get();
La méthode whereNotNull
vérifie que la valeur de la colonne n'est pas NULL
:
$users = table('users')->whereNotNull('age')->get();
whereIn / whereNotInâ
La méthode whereIn
vérifie que la valeur d'une colonne donnée est contenue dans le tableau donné:
$users = table('users')->whereIn('age', [27, 30])->get();
La méthode whereNotIn
vérifie que la valeur de la colonne donnée n'est pas contenue dans le tableau donné:
$users = table('users')->whereNotIn('age', [27, 30])->get();
whereBetween / whereNotBetweenâ
La méthode whereBetween
vérifie que la valeur d'une colonne est comprise entre deux valeurs:
$users = table('users')->whereBetween('votes', [1, 100])->get();
La méthode whereNotBetween
vérifie que la valeur d'une colonne se situe en dehors de deux valeurs:
$users = table('users')->whereNotBetween('votes', [1, 100])->get();
Ordonner, Grouper, et limiterâ
orderByâ
La méthode orderBy
vous permet de trier le rĂ©sultat de la requĂȘte en fonction d'une colonne donnĂ©e. Le premier argument de la mĂ©thode orderBy
devrait ĂȘtre la colonne que vous souhaitez trier, tandis que le second argument contrĂŽle le sens du tri et peut ĂȘtre asc
ou desc
:
$users = table('users')->orderBy('name', 'desc')->get();
groupBy et havingâ
Les méthodes groupBy
et having
peuvent ĂȘtre utilisĂ©es pour regrouper les rĂ©sultats de la requĂȘte. La signature de la mĂ©thode having
est similaire à celle de la méthode where
:
$users = table('orders')
->groupBy('price')
->having('price', '>', 100)
->get();
jump et takeâ
Pour limiter le nombre de rĂ©sultats renvoyĂ©s par la requĂȘte ou pour ignorer un nombre donnĂ© de rĂ©sultats dans la requĂȘte, vous pouvez utiliser les mĂ©thodes jump
(pour ignorer) et take
(pour renvoyer un nombre):
$users = DB::table('users')->jump(10)->take(5)->get();
Aggregatesâ
Le gĂ©nĂ©rateur de requĂȘtes fournit Ă©galement une variĂ©tĂ© de mĂ©thodes d'agrĂ©gation telles que count
, max
, min
, avg
et sum
. Vous pouvez appeler n'importe laquelle de ces mĂ©thodes aprĂšs avoir construit votre requĂȘte.
$users = table('users')->count();
$price = table('orders')->max('price');
$avg = table('orders')->avg('price');
DĂ©terminer si des enregistrements existentâ
Au lieu d'utiliser la méthode count
pour dĂ©terminer s'il existe des enregistrements correspondant aux contraintes de votre requĂȘte, vous pouvez utiliser la mĂ©thode exists
:
$exists = table('users')->where('id', 1)->exists();
SpĂ©cification d'une clause de sĂ©lectionâ
Bien entendu, il se peut que vous ne souhaitiez pas toujours sélectionner toutes les colonnes d'une table de base de données. à l'aide de la méthode select
, vous pouvez spĂ©cifier une clause select personnalisĂ©e pour la requĂȘte:
$price = table('orders')->select('price')->get();
// Ou séléctionnez plusieurs colonne
$price = table('orders')->select(['id', 'price'])->get();
Insertion d'informationâ
Le gĂ©nĂ©rateur de requĂȘtes fournit Ă©galement une mĂ©thode insert
pour insérer des enregistrements dans la table de base de données. La méthode insert accepte un tableau de noms de colonnes et de valeurs:
table('users')->insert(
['email' => 'exemple@gmail.com', 'age' => 27]
);
Vous pouvez mĂȘme insĂ©rer plusieurs enregistrements dans la table avec un seul appel Ă insĂ©rer en transmettant un tableau de tableaux. Chaque tableau reprĂ©sente une ligne Ă insĂ©rer dans la table:
Mise Ă jourâ
Bien entendu, en plus d'insĂ©rer des enregistrements dans la base de donnĂ©es, le gĂ©nĂ©rateur de requĂȘtes peut Ă©galement mettre Ă jour des enregistrements existants Ă l'aide de la mĂ©thode update
. La méthode update, comme la méthode insert
, accepte un tableau de paires de colonnes et de valeurs contenant les colonnes Ă mettre Ă jour. Vous pouvez contraindre la requĂȘte de mise Ă jour Ă l'aide de clauses where
:
table('users')->where('id', 1)->update(
['email' => 'exemple@gmail.com', 'age' => 27]
);
Supprimer un enregistrementâ
Le gĂ©nĂ©rateur de requĂȘtes peut Ă©galement ĂȘtre utilisĂ© pour supprimer des enregistrements de la table via la mĂ©thode delete
. Vous pouvez contraindre des instructions delete en ajoutant des clauses where avant d'appeler la méthode delete
:
table('users')->delete();
table('users')->where('age', '>', 27)->delete();
Si vous souhaitez vider la table entiÚre, ce qui supprimera toutes les lignes et réinitialisera l'ID d'auto-incrémentation à zéro, vous pouvez utiliser la méthode truncate
:
table('pets')->truncate();
Il manque quelque chose ?
Si vous rencontrez des problÚmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.