MikroORM 基于数据库中的值创建过滤器查询
MikroORM Create filter query based on a value in the database
简而言之,是否可以创建一个筛选查询,在其中引用存储在行中的值?
例如:
orm.em.findOne(Job, {
status: 'active',
startDate: {
$gt: '$anotherDateField'
}
}
我的目标是拥有一个用户输入定义的过滤器(状态),但也只返回开始日期大于另一列值的某些行。
您可以使用自定义 SQL 片段
orm.em.findOne(Job, {
status: 'active',
// expr helper allows to escape strict typing of the method, so we can use `em.raw()`
[expr('startDate')]: {
$gt: orm.em.raw('another_date_field') // this will have to be column name, not property name
}
}
请注意,您的 em
需要键入从驱动程序包导出的那个才能访问 em.raw()
方法(如果您使用 orm
实例,则需要将其键入 MikroORM<YourDriver>
,以便可以正确键入 orm.em
。
https://mikro-orm.io/docs/entity-manager/#using-custom-sql-fragments
简而言之,是否可以创建一个筛选查询,在其中引用存储在行中的值?
例如:
orm.em.findOne(Job, {
status: 'active',
startDate: {
$gt: '$anotherDateField'
}
}
我的目标是拥有一个用户输入定义的过滤器(状态),但也只返回开始日期大于另一列值的某些行。
您可以使用自定义 SQL 片段
orm.em.findOne(Job, {
status: 'active',
// expr helper allows to escape strict typing of the method, so we can use `em.raw()`
[expr('startDate')]: {
$gt: orm.em.raw('another_date_field') // this will have to be column name, not property name
}
}
请注意,您的 em
需要键入从驱动程序包导出的那个才能访问 em.raw()
方法(如果您使用 orm
实例,则需要将其键入 MikroORM<YourDriver>
,以便可以正确键入 orm.em
。
https://mikro-orm.io/docs/entity-manager/#using-custom-sql-fragments