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