Study
Phoenix

Ecto Query Dasar

Penjelasan

Ecto menyediakan Ecto.Query, sebuah DSL mirip SQL tapi ditulis dalam sintaks Elixir, memakai macro from beserta operator seperti where, order_by, select, dan limit. Query yang sudah disusun dieksekusi lewat fungsi Repo seperti Repo.all/1 untuk mengambil banyak baris, Repo.one/1 untuk satu baris, atau Repo.get/2 untuk mengambil berdasarkan primary key. Karena query adalah data biasa (bukan string SQL), kita bisa menyusunnya secara bertahap dengan pipe operator, menambahkan kondisi where sesuai kebutuhan sebelum akhirnya dieksekusi. Ini membuat query composable dan mudah dites tanpa harus menyentuh database sungguhan untuk memeriksa struktur query.

Contoh Konsep

import Ecto.Query

# Query dasar: ambil semua produk dengan harga di atas 100000, urut dari termahal
query =
  from p in TokoApp.Catalog.Produk,
    where: p.harga > 100000,
    order_by: [desc: p.harga],
    select: p

TokoApp.Repo.all(query)

# Mengambil satu produk berdasarkan id
TokoApp.Repo.get(TokoApp.Catalog.Produk, 1)

Praktikum

Tulis query untuk mengambil semua artikel yang judulnya mengandung kata 'Elixir', diurutkan berdasarkan judul menaik.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Gunakan ilike alih-alih like ketika ingin pencarian teks yang tidak case-sensitive di PostgreSQL.