猿记录

一个记录、分享的博客

您的位置:主页 > 技术专栏 >

thinkjs where语句里添加or语句

2018-08-29 18:04:38 作者:yxl 次阅读 技术专栏

1、使用_complex 然后使用 _login 默认是 AND  

 let affectedRows = await cate.where({ _complex: { parent_id: id, id: id, _logic: "OR" } }).delete();

model.table(table, hasPrefix)

  • table {String} 表名,支持值为一个 SELECT 语句

  • hasPrefix {Boolean} table 里是否已经含有了表前缀,默认值为 false

  • return {this}

设置当前模型对应的表名,如果 hasPrefix 为 false 且 table 不是 SQL 语句,那么表名会追加 tablePrefix,最后的值会设置到 this.options.table 属性上。

如果没有设置该属性,那么最后解析 SQL 时通过 mode.tableName 属性获取表名。

model.union(union, all)

  • union {String} union 查询字段

  • all {boolean} 是否使用 UNION ALL

  • return {this}

设置 SQL 中的 UNION 查询,会添加 this.options.union 属性,便于后续分析。

module.exports = class extends think.Model {
  getList(){    //SELECT * FROM `think_user` UNION (SELECT * FROM think_pic2)
    return this.union('SELECT * FROM think_pic2').select();
  }
  getList2(){    //SELECT * FROM `think_user` UNION ALL (SELECT * FROM `think_pic2`)
    return this.union({table: 'think_pic2'}, true).select();
  }
}

model.join(join)

  • join {String | Object | Array} 要组合的查询语句,默认为 LEFT JOIN

  • return {this}

组合查询,支持字符串、数组和对象等多种方式。会添加 this.options.join 属性,便于后续分析。

字符串
module.exports = class extends think.Model {
  getList(){    //SELECT * FROM `think_user` LEFT JOIN think_cate ON think_group.cate_id=think_cate.id
    return this.join('think_cate ON think_group.cate_id=think_cate.id').select();
  }
}
数组
module.exports = class extends think.Model {
  getList(){    //SELECT * FROM `think_user` LEFT JOIN think_cate ON think_group.cate_id=think_cate.id RIGHT JOIN think_tag ON think_group.tag_id=think_tag.id
    return this.join([      'think_cate ON think_group.cate_id=think_cate.id',      'RIGHT JOIN think_tag ON think_group.tag_id=think_tag.id'
    ]).select();
  }
}
对象:单个表
module.exports = class extends think.Model {
  getList(){    //SELECT * FROM `think_user` INNER JOIN `think_cate` AS c ON think_user.`cate_id`=c.`id`
    return this.join({      table: 'cate',      join: 'inner', //join 方式,有 left, right, inner 3 种方式
      as: 'c', // 表别名
      on: ['cate_id', 'id'] //ON 条件
    }).select();
  }
}
对象:多次 JOIN
module.exports = class extends think.Model {
  getList(){    //SELECT * FROM think_user AS a LEFT JOIN `think_cate` AS c ON a.`cate_id`=c.`id` LEFT JOIN `think_group_tag` AS d ON a.`id`=d.`group_id`
    return this.alias('a').join({      table: 'cate',      join: 'left',      as: 'c',      on: ['cate_id', 'id']
    }).join({      table: 'group_tag',      join: 'left',      as: 'd',      on: ['id', 'group_id']
    }).select()
  }
}
对象:多个表
module.exports = class extends think.Model {
  getList(){    //SELECT * FROM `think_user` LEFT JOIN `think_cate` ON think_user.`id`=think_cate.`id` LEFT JOIN `think_group_tag` ON think_user.`id`=think_group_tag.`group_id`
    return this.join({      cate: {        on: ['id', 'id']
      },      group_tag: {        on: ['id', 'group_id']
      }
    }).select();
  }
}
module.exports = class extends think.Model {
  getList(){    //SELECT * FROM think_user AS a LEFT JOIN `think_cate` AS c ON a.`id`=c.`id` LEFT JOIN `think_group_tag` AS d ON a.`id`=d.`group_id`
    return this.alias('a').join({      cate: {        join: 'left', // 有 left,right,inner 3 个值
        as: 'c',        on: ['id', 'id']
      },      group_tag: {        join: 'left',        as: 'd',        on: ['id', 'group_id']
      }
    }).select()
  }
}


凡本站注明“本站”或“投稿”的所有文章,版权均属于本站或投稿人,未经本站授权不得转载、摘编或利用其它方式使用上述作品。

编辑:yxl 关键词: thinkjs
0

网友评论