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) -> Selfwhere
F: Fn(DynIden, DynIden) -> Condition + 'static + Send + Sync,
pub fn on_condition<F>(self, f: F) -> Selfwhere
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
use sea_orm::{entity::*, query::*, DbBackend, tests_cfg::{cake, cake_filling}};
use sea_query::{Expr, IntoCondition};
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(10i32)
.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 RelationDefwhere
E: EntityTrait,
R: EntityTrait,
impl<E, R> From<RelationBuilder<E, R>> for RelationDefwhere
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 Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
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