gpt4 book ai didi

where - Sequelize : $like though multiple included models

转载 作者:行者123 更新时间:2023-12-03 22:41:20 25 4
gpt4 key购买 nike

我们在 API 中有一个端点,用于过滤和返回事件。
event 有以下关系:

  • 事件模型
  • 音频模型
  • 设备型号
  • 用户模型

  • 这意味着 event 与一个 audio 和一个 user 相关联, audio 与一个 device 相关联。

    这是来自过滤事件的端点的缩短代码片段:
    eventModel.findAndCountAll({
    where: { /*...*/ },
    include: [{
    model: audioModel,
    attributes: ['guid', 'measured_at'],
    where: { /*...*/ },
    include: [{
    model: deviceModel,
    attributes: ['guid', 'shortname'],
    where: { /*...*/ },
    }]
    },
    {
    model: userModel,
    attributes: ['guid', 'firstname', 'lastname', 'email'],
    where: { /*...*/ },
    },
    ]
    });

    每个模型都有 where 属性,它按日期、空值和其他一些东西过滤掉项目。我已经剪掉了,因为这对我来说并不重要。

    我需要的是添加一个 search 属性,它将通过多个嵌套属性过滤事件:
    eventModel.guid $like search deviceModel.guid $like search deviceModel.shortname $like search userModel.firstname $like search userModel.lastname $like search
    我的问题是我不能将 $like 放入包含模型中的每个 where 属性中,因为在这种情况下,条件将作为 AND 而不是 OR

    有没有办法在不迁移到原始查询的情况下实现这些东西?

    最佳答案

    有一种方法可以在不使用 RAW 查询的情况下做到这一点。在下面找到:

    var condition = " eventModel.guid like '%"+searck_keyword+"%' ";
    condition += " OR deviceModel.guid like '%"+searck_keyword+"%' "
    condition += " OR deviceModel.shortname like '%"+searck_keyword+"%' "
    condition += " OR userModel.firstname like '%"+searck_keyword+"%' "
    condition += " OR userModel.lastname like '%"+searck_keyword+"%' "

    并在 where 中传递条件,如 where: [condition] 并删除所有包含模型的 where

    关于where - Sequelize : $like though multiple included models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44850372/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com