首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询相关BelongsToMany

问查询相关BelongsToMany
EN

Stack Overflow用户
提问于 2016-04-24 18:13:31
回答 1查看 214关注 0票数 0

用户模型

代码语言:javascript
复制
    var User = db.Model.extend({
    initialize: function() {
      this.on('creating', this.generateId, this);
    },
    tableName: 'users',
    hasTimestamps: true,
    hidden: ['password'],
    companies: function(){
      return this.belongsToMany(
        require('./company'),
        'users_companies',
        'user_id',
        'company_id'
      )
    },
    charities: function(){
      return this.belongsToMany(
        require('./charity'),
        'users_charities',
        'user_id',
        'charity_id'
      ).withPivot(['company_id']);
    },
    generateId: function(model, attrs, options) {
      model.set('id', uuid.v4());
    }
});

控制器

代码语言:javascript
复制
exports.getAllCharities = function(req, res){
  new User({ id: req.user.id })
  .charities()
  .fetch()
  .then(function(charities){
    return res.json(charities.toJSON());
  })

然而,上面的工作,我需要能够查询返回的慈善机构,以过滤‘公司_id’的枢轴字段。尝试charities.where({company_id: 1}).fetch(),会产生一个异常,说明哪里不是慈善机构的功能。

找到了一个解决方案

代码语言:javascript
复制
new User({ id: req.user.id })
  .charities()
  .query('where', 'company_id', '=', req.query.companyid)
  .fetch()
  .then(function(charities){
    return res.json(charities.toJSON())
  })

有人能解释一下这和使用.where({company_id: req.query.companyid})的区别吗?

EN

回答 1

Stack Overflow用户

发布于 2016-05-07 10:09:00

嗯,使用.where({company_id: req.query.companyid}),你基本上是把自己限制在“这个-相等-那个”上。如果你使用query,你可以取得更多的成就,例如.query('where', 'age', '>', 10)

此外,您还可以使用稍微不同的query,还可以使用knex查询生成器。例如:

代码语言:javascript
复制
new Person().query(function(qb) {
    qb.whereIn('id', [2, 4]);
}).fetch().then(function(){});

这样,您基本上可以访问knex.js提供的一切:http://knexjs.org/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36827028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档