Model and ModelMut traits handle common operations, you’ll use the query builder for filtering, sorting, pagination, and joins.
Basic Queries
Getting the Connection
Always start by getting the database connection:Find All
Find by ID
Filtering with Conditions
Use thefilter() method with Condition for complex queries:
Available Filter Methods
| Method | SQL Equivalent | Example |
|---|---|---|
eq(value) | = value | Column::Status.eq("active") |
ne(value) | != value | Column::Status.ne("deleted") |
gt(value) | > value | Column::Age.gt(18) |
gte(value) | >= value | Column::Age.gte(21) |
lt(value) | < value | Column::Price.lt(100) |
lte(value) | <= value | Column::Price.lte(50) |
between(a, b) | BETWEEN a AND b | Column::Age.between(18, 65) |
like(pattern) | LIKE pattern | Column::Name.like("%john%") |
starts_with(s) | LIKE 's%' | Column::Name.starts_with("J") |
ends_with(s) | LIKE '%s' | Column::Email.ends_with(".com") |
contains(s) | LIKE '%s%' | Column::Title.contains("rust") |
is_null() | IS NULL | Column::DeletedAt.is_null() |
is_not_null() | IS NOT NULL | Column::Email.is_not_null() |
is_in(vec) | IN (...) | Column::Status.is_in(vec!["a", "b"]) |
is_not_in(vec) | NOT IN (...) | Column::Id.is_not_in(vec![1, 2]) |
Complex Conditions
OR Conditions
AND + OR Combined
Sorting
Order By
Pagination
Limit and Offset
Paginator
SeaORM provides a built-in paginator:Selecting Specific Columns
Partial Select
Aggregations
Count
Sum, Avg, Min, Max
Joins
Loading Related Data
Custom Joins
Raw Queries
For complex queries that can’t be expressed with the query builder:Transactions
Basic Transaction
Query Examples
Search with Pagination
Soft Delete Pattern
Conditional Query Building
Summary
| Operation | Method | Example |
|---|---|---|
| Find all | find().all() | Entity::find().all(db) |
| Find by ID | find_by_id() | Entity::find_by_id(1).one(db) |
| Filter | filter() | find().filter(Column::X.eq(y)) |
| Sort | order_by_*() | find().order_by_asc(Column::X) |
| Limit | limit() | find().limit(10) |
| Offset | offset() | find().offset(20) |
| Paginate | paginate() | find().paginate(db, 10) |
| Count | count() | find().count(db) |
| Join | find_also_related() | find().find_also_related(Other) |