You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sequelize关联查询筛选报错:where子句未知列'SiteService.service'

Sequelize关联查询筛选SiteService字段报错问题

我用Sequelize实现站点搜索功能,支持按站点域名、账户名称、客户名称及服务名称筛选。目前其他筛选条件正常,仅SiteService相关的筛选报错;无搜索词时能正常获取SiteService关联数据,添加搜索词后就报错。


查询代码

const sites = await Site.findAndCountAll({
        order,
        limit: limits.limit,
        offset: limits.offset,
        where,
        include: [
            {
                model: Account,
                attributes: ['account_id', 'name', 'customer_id'],
                paranoid: false,
                required: true,
                include: [
                    {
                        model: Customer,
                        attributes: ['customer_id', 'name'],
                        paranoid: false,
                        required: true,
                    },
                ],
            },
            {
                model: Version,
                as: 'versions',
                limit: 1,
                order: [['version_id', 'desc']],
                attributes: ['status', 'config', 'user_id', 'updated_at', 'version_id', 'updated_by', 'is_prod'],
                include: [
                    {
                        model: User,
                        as: 'updatedByUser',
                        attributes: ['email'],
                        paranoid: false,
                    },
                ],
            },
            {
                model: SiteService,
                attributes: ['service'],
                paranoid: false,
                required: true,
            }
        ],
        distinct: true,
    });

搜索条件逻辑

if (search) {
    where[Op.or] = [
        { domain: { [Op.like]: `%${search}%` } },
        { '$Account.name$': { [Op.like]: `%${search}%` } },
        { '$Account.Customer.name$': { [Op.like]: `%${search}%` } },
        { '$SiteService.service$': { [Op.like]: `%${search}%` } },
    ];
}

错误信息

sqlMessage: "Unknown column 'SiteService.service' in 'where clause'",

模型关联定义

Site与SiteService的关联:

Site.hasMany(models.SiteService, {
    foreignKey: 'site_id',
});
SiteService.belongsTo(models.Site, {
    foreignKey: 'site_id',
});

Sequelize生成的SQL语句

SELECT count(DISTINCT(`Site`.`site_id`)) AS `count` 
FROM `sites` AS `Site` 
INNER JOIN `accounts` AS `Account` 
  ON `Site`.`account_id` = `Account`.`account_id` 
INNER JOIN `customers` AS `Account->Customer` 
  ON `Account`.`customer_id` = `Account->Customer`.`customer_id` 
INNER JOIN `site_services` AS `SiteServices` 
  ON `Site`.`site_id` = `SiteServices`.`site_id` 
WHERE (
  `Site`.`deleted_at` IS NULL 
  AND (
    (`Site`.`domain` LIKE '%test%' 
    OR `Account`.`name` LIKE '%test%' 
    OR `Account->Customer`.`name` LIKE '%test%' 
    OR `SiteService`.`service` LIKE '%test%') 
  AND `Site`.`is_active` = 1));

疑问

其他关联模型用相同方式筛选正常,仅SiteService失效,我哪里操作有误?


内容的提问来源于stack exchange,提问作者LiteralMetaphore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:28:26