我有一个名为staff的sequelize模型。其中一个staff列名为locations,它包含了该staff所在的所有位置的ID。我想创建一个使用Location ID的查询,以获取该位置的所有活动员工。我如何使用ORM来实现这一点?
hs1ihplo1#
假设我正确理解了您的问题,并且您的locations列包含CSV数据,那么您需要使用FIND_IN_SET()-
Staff.findAll({ where: sequelize.where(sequelize.fn('FIND_IN_SET', locationId, sequelize.col('locations')), {[Op.gt]: 0}) })
一个更好的选择是规范化数据,因为此查询是不可SARGable的。
o4tp2gmn2#
在Sequelize中,您可以使用查询中的include和where选项执行查询,根据员工的位置筛选员工。
const staff = await Staff.findAll({ include: [ { model: Location, as: 'locations', where: { id: locationId }, through: { attributes: [] } } ] });
syqv5f0l3#
常量findStaff =等待人员模型.findAll({其中:{位置ID:“您的位置ID”} })
3条答案
按热度按时间hs1ihplo1#
假设我正确理解了您的问题,并且您的locations列包含CSV数据,那么您需要使用FIND_IN_SET()-
一个更好的选择是规范化数据,因为此查询是不可SARGable的。
o4tp2gmn2#
在Sequelize中,您可以使用查询中的include和where选项执行查询,根据员工的位置筛选员工。
syqv5f0l3#
常量findStaff =等待人员模型.findAll({其中:{位置ID:“您的位置ID”} })