zoukankan      html  css  js  c++  java
  • egg.js两个表相互关联怎么写

    有两个表,第一个接口:如果a表是主表,需要连接多个表,其中有个是b表,另一个接口,b表是主表,需要连接多个,其中有个是a表,那么这时候在model里面不需要做2次关联,直接1次关联,然后直接在service里面的include去用这个关联名字就可以了,例如:
    在HxUserBaseInfo表里面

    this.belongsTo(app.model.HxUser, { foreignKey: 'userId', targetKey: 'userId', as: 'basic' })
    

    在HxUser表里面

    this.hasOne(app.model.HxUserBaseInfo, { foreignKey: 'userId', sourceKey: 'userId', as: 'basic' })
    

    HxUserBaseInfo为主表的时候

    async baseInfoById(userId) {
        const { rows } = await this.ctx.model.xxxxxxx.findAndCountAll({
          attributes: { exclude: [ 'createdAt', 'updatedAt' ] },
          where: {
            userId,
          },
          include: [
            {
              model: this.app.model.HxUser,
              as: 'basic',
            },
          ],
        })
        return { list: rows }
      }
    }
    

    HxUser为主表的时候

     async userList({ limit, offset, userName = '', time, ...params }) {
        const { Op } = this.app.Sequelize
        const { rows, count } = await this.ctx.model.HxUser.findAndCountAll({
          attributes: { exclude: [ 'createdAt', 'updatedAt' ] },
          distinct: true,
          where: {
            ...time,
            ...params,
          },
          // 如果没有设置required: false的话 是inner 连接,如果设置了就是左连接
          include: [{
            model: this.app.model.HxUserBaseInfo,
            as: 'basic',
            attributes: [ 'userAvator', 'userName', 'gender' ],
            required: !!userName,
            where: {
              userName: {
                [Op.like]: `%${userName}%`,
              },
            },
          },
          ],
          offset,
          limit,
        })
        return { list: rows, total: count }
      }
    
  • 相关阅读:
    HDU1266 Reverse Number
    codevs1380 没有上司的舞会
    codevs1163 访问艺术馆
    codevs2144 砝码称重 2
    codevs1553 互斥的数
    codevs1230 元素查找
    codevs3118 高精度练习之除法
    codevs1245 最小的N个和
    codevs1063 合并果子
    codevs1052 地鼠游戏
  • 原文地址:https://www.cnblogs.com/antyhouse/p/13256337.html
Copyright © 2011-2022 走看看