pub struct RelationDef {
pub rel_type: RelationType,
pub from_tbl: TableRef,
pub to_tbl: TableRef,
pub from_col: Identity,
pub to_col: Identity,
pub is_owner: bool,
pub on_delete: Option<ForeignKeyAction>,
pub on_update: Option<ForeignKeyAction>,
pub on_condition: Option<Box<dyn Fn(DynIden, DynIden) -> Condition + Send + Sync>>,
pub fk_name: Option<String>,
}
Expand description
Defines a relationship
Fields
rel_type: RelationType
The type of relationship defined in RelationType
from_tbl: TableRef
Reference from another Entity
to_tbl: TableRef
Reference to another ENtity
from_col: Identity
Reference to from a Column
to_col: Identity
Reference to another column
is_owner: bool
Defines the owner of the Relation
on_delete: Option<ForeignKeyAction>
Defines an operation to be performed on a Foreign Key when a
DELETE
Operation is performed
on_update: Option<ForeignKeyAction>
Defines an operation to be performed on a Foreign Key when a
UPDATE
Operation is performed
on_condition: Option<Box<dyn Fn(DynIden, DynIden) -> Condition + Send + Sync>>
Custom join ON condition
fk_name: Option<String>
The name of foreign key constraint
Implementations
sourceimpl RelationDef
impl RelationDef
sourcepub fn on_condition<F>(self, f: F) -> Self where
F: Fn(DynIden, DynIden) -> Condition + 'static + Send + Sync,
pub fn on_condition<F>(self, f: F) -> Self where
F: Fn(DynIden, DynIden) -> Condition + 'static + Send + Sync,
Set custom join ON condition.
This method takes a closure with two parameters denoting the left-hand side and right-hand side table in the join expression.
Examples
assert_eq!(
cake::Entity::find()
.join(
JoinType::LeftJoin,
cake_filling::Relation::Cake
.def()
.rev()
.on_condition(|_left, right| {
Expr::tbl(right, cake_filling::Column::CakeId)
.gt(10)
.into_condition()
})
)
.build(DbBackend::MySql)
.to_string(),
[
“SELECT cake
.id
, cake
.name
FROM cake
”,
“LEFT JOIN cake_filling
ON cake
.id
= cake_filling
.cake_id
AND cake_filling
.cake_id
> 10”,
]
.join(“ “)
);
Trait Implementations
sourceimpl Debug for RelationDef
impl Debug for RelationDef
sourceimpl<E, R> From<RelationBuilder<E, R>> for RelationDef where
E: EntityTrait,
R: EntityTrait,
impl<E, R> From<RelationBuilder<E, R>> for RelationDef where
E: EntityTrait,
R: EntityTrait,
sourcefn from(b: RelationBuilder<E, R>) -> Self
fn from(b: RelationBuilder<E, R>) -> Self
Converts to this type from the input type.
Auto Trait Implementations
impl !RefUnwindSafe for RelationDef
impl Send for RelationDef
impl Sync for RelationDef
impl Unpin for RelationDef
impl !UnwindSafe for RelationDef
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more