


ecto interroge dans Elixir: A débutant Guide
Cet article présente Ecto, le langage de requête d'Elixir, vous guidant à travers des techniques de requête de base. Nous couvrirons les jointures, les associations, l'agrégation, etc., en supposant une compréhension de base des principes fondamentaux de l'élixir et de l'Ecto.
Concepts clés:
- ecto est le DSL d'Elixir pour les interactions de base de données, reflétant étroitement SQL.
- Il propose des syntaxes de mots clés et de macro, fonctionnellement équivalent mais différents en style.
- Fonctions de base comme
where
,limit
,offset
etdistinct
permettent une sélection précise de données. - Les fonctions d'agrégation (
group_by
,having
,count
,avg
,sum
,min
,max
) permettent des calculs de données complexes.
En démarrage avec l'application ectoing
:
Les exemples utilisent l'application ectoing
. Clone, configurer et migrer la base de données comme suit:
git clone https://github.com/tpunt/ectoing cd ectoing mix deps.get # Update credentials in config/config.exs mix ecto.create mix ecto.migrate mix run priv/repo/seeds.exs
(MySQL est utilisé ici; Bien que adaptable à d'autres bases de données, certains exemples ultérieurs pourraient être spécifiques à MySQL.)
Le schéma de base de données:
requêtes de base:
Commençons par des requêtes simples. N'oubliez pas d'importer Ecto.Query
dans la coquille d'élixir (iex -S mix
).
Remplir tous les utilisateurs:
SQL:
SELECT * FROM users;
ecto (syntaxe des mots clés):
query = Ectoing.User Ectoing.Repo.all(query)
ecto (syntaxe macro):
query = Ectoing.User |> Ecto.Query.all() Ectoing.Repo.all(query)
Sélection de champs spécifiques (premier nom, nom de famille):
SQL:
SELECT firstname, surname FROM users;
ecto (syntaxe des mots clés):
query = from u in Ectoing.User, select: [u.firstname, u.surname] Ectoing.Repo.all(query)
ecto (syntaxe macro):
query = Ectoing.User |> Ecto.Query.select([u], [u.firstname, u.surname]) Ectoing.Repo.all(query)
Les résultats seront des listes de listes, de tuples ou de cartes en fonction de la structure de la clause select
.
Filtrage et personnalisation des résultats:
Affinons les requêtes pour sélectionner des sous-ensembles de données.
Sélection des utilisateurs avec nom de famille "Doe":
SQL:
SELECT * FROM users WHERE surname = "doe";
ecto (syntaxe des mots clés):
surname = "doe" query = from u in Ectoing.User, where: u.surname == ^surname Ectoing.Repo.all(query)
ecto (syntaxe macro):
surname = "doe" query = Ectoing.User |> Ecto.Query.where([u], u.surname == ^surname) Ectoing.Repo.all(query)
Sélection des noms de famille distincts, ordonnés et limités:
SQL:
SELECT DISTINCT surname FROM users LIMIT 3 ORDER BY surname;
ecto (syntaxe des mots clés):
query = from u in Ectoing.User, select: u.surname, distinct: true, limit: 3, order_by: u.surname Ectoing.Repo.all(query)
ecto (syntaxe macro):
query = Ectoing.User |> Ecto.Query.select([u], u.surname) |> Ecto.Query.distinct(true) |> Ecto.Query.limit(3) |> Ecto.Query.order_by([u], u.surname) Ectoing.Repo.all(query)
Requêtes d'agrégation:
ecto prend en charge les fonctions d'agrégation.
trouver des utilisateurs avec une note d'amie moyenne de 4 ou plus:
SQL:
SELECT friend_id, avg(friend_rating) AS avg_rating FROM friends GROUP BY friend_id HAVING avg_rating >= 4 ORDER BY avg_rating DESC;
ecto (syntaxe des mots clés):
query = from f in Ectoing.Friend, select: %{friend_id: f.friend_id, avg_rating: avg(f.friend_rating)}, group_by: f.friend_id, having: avg(f.friend_rating) >= 4, order_by: [desc: avg(f.friend_rating)] Ectoing.Repo.all(query)
ecto (syntaxe macro): (structure similaire à la syntaxe des mots clés, en utilisant l'opérateur de tuyau)
Conclusion:
Cette introduction couvre les bases de requête d'Ecto. Les étapes suivantes impliquent d'explorer les jointures, les requêtes complexes et les techniques avancées. Reportez-vous à la documentation Ecto pour un guide complet.
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!

Restez informé des dernières tendances technologiques avec ces meilleurs bulletins de développeur! Cette liste organisée offre quelque chose pour tout le monde, des amateurs d'IA aux développeurs assaisonnés du backend et du frontend. Choisissez vos favoris et gagnez du temps à la recherche de rel

Ce tutoriel vous guide dans la création d'un pipeline de traitement d'image sans serveur à l'aide de services AWS. Nous allons créer un frontend Next.js déployé sur un cluster ECS Fargate, en interagissant avec une passerelle API, des fonctions lambda, des seaux S3 et DynamoDB. Ème

Ce programme pilote, une collaboration entre le CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal et ACTUTIE, rationalise ARM64 CI / CD pour les projets GitHub CNCF. L'initiative répond aux problèmes de sécurité et aux performances LIM


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.
