Relation<R, F extends Fields> class final

A relationship is a query description. Constructing or selecting it performs no I/O. List results are loaded in batches on the root query's connection.

Filters, ordering, pagination, and selections return new descriptions. Each selected relationship can add queries; batching groups distinct parent keys instead of issuing one query per parent. Use a transaction when the root and its batches must share the database's configured snapshot isolation.

Constructors

Relation(Table<R, F> target, {required List<Expr<Object?>> parent, required List<ReadField<Object?>> child(F)})
Describes an equality relationship between parent and target key columns.
factory

Properties

hashCode → int
The hash code for this object.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

any() → Expr<bool>
Builds a correlated SQL EXISTS expression for the filtered relationship.
count() → Expr<int>
Builds a correlated SQL count without fetching related rows into Dart.
every(Expr<bool?> condition(F)) → Expr<bool?>
Checks that every filtered related row makes condition SQL TRUE.
many() → Selection<List<R>>
Selects a list per parent, returning an empty list when no rows match.
none() → Expr<bool?>
Checks that no related row satisfies the where filters.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
one({ToOneStrategy strategy = ToOneStrategy.automatic}) → Selection<R?>
Selects at most one visible row, or null when no row matches.
orderBy(List<OrderTerm> order(F)) → Relation<R, F>
Replaces related-row ordering; include a stable tie breaker for pagination.
required({ToOneStrategy strategy = ToOneStrategy.automatic}) → Selection<R>
Requires one visible row while preserving the selected value's nullability.
select<S>(Selection<S> selection(F)) → Relation<S, F>
Replaces each related row's result shape without loading it.
skip(int count) → Relation<R, F>
Skips count rows per parent; batched pagination requires orderBy.
take(int count) → Relation<R, F>
Limits each parent's result to count rows; negative counts are rejected.
toString() → String
A string representation of this object.
inherited
where(Expr<bool?> predicate(F)) → Relation<R, F>
Adds a SQL predicate to the related rows, ANDed with earlier filters.

Operators

operator ==(Object other) → bool
The equality operator.
inherited