diff --git a/src/query/helper.rs b/src/query/helper.rs index 43bc9da9..976220c1 100644 --- a/src/query/helper.rs +++ b/src/query/helper.rs @@ -511,6 +511,8 @@ pub trait QuerySelect: Sized { /// "SELECT `cake`.`id`, `cake`.`name`, UPPER(`cake`.`name`) AS `name_upper` FROM `cake`" /// ); /// ``` + /// + /// FIXME: change signature to `mut self` fn expr_as(&mut self, expr: T, alias: A) -> &mut Self where T: Into, @@ -519,6 +521,34 @@ pub trait QuerySelect: Sized { self.query().expr_as(expr, alias.into_identity()); self } + + /// Owned version of `expr_as`. + /// + /// Select column. + /// + /// ``` + /// use sea_orm::sea_query::{Alias, Expr, Func}; + /// use sea_orm::{entity::*, tests_cfg::cake, DbBackend, QuerySelect, QueryTrait}; + /// + /// assert_eq!( + /// cake::Entity::find() + /// .expr_as( + /// Func::upper(Expr::col((cake::Entity, cake::Column::Name))), + /// "name_upper" + /// ) + /// .build(DbBackend::MySql) + /// .to_string(), + /// "SELECT `cake`.`id`, `cake`.`name`, UPPER(`cake`.`name`) AS `name_upper` FROM `cake`" + /// ); + /// ``` + fn expr_as_(mut self, expr: T, alias: A) -> Self + where + T: Into, + A: IntoIdentity, + { + self.query().expr_as(expr, alias.into_identity()); + self + } } // LINT: when the column does not appear in tables selected from