2014-11-08 2 views
0

У меня есть модели для обоих User и UserRole. В настоящее время в этих двух ролях есть две роли и много пользователей. Я не могу найти способ добраться до . данные на выборке для пользователь.bookshelfjs отношение узла

Ошибка, которую я вижу, это: Error: ER_BAD_FIELD_ERROR: Unknown column 'user_roles.user_id' in 'where clause'.

var User = bookshelf.Model.extend({ 
    tableName: 'users', 
    role: function() { 
     return this.hasOne(UserRole); 
    } 
}, { 
    lookupByToken: Promise.method(function(token) { 
     if (!token) throw new Error('Token is required'); 
     return new this({token: token}).fetch({require: true, withRelated:['role']}); 
    }) 
}); 

.

var UserRole = bookshelf.Model.extend({ 
    tableName: 'user_roles', 
    users: function() { 
    return this.belongsToMany(User, 'users', 'role_id', 'id'); 
    } 
}); 

module.exports = UserRole; 

Миграция knex выглядит следующим образом:

knex.schema.createTable('user_roles', function (table) { 
    table.increments(); 
    table.string('role').notNullable(); 
    table.timestamps(); 
}).table('users', function(table) { 
    table.integer('role_id').unsigned().references('user_roles.id'); 
}) 

Есть идеи?

ответ

0

Я понял. User модель была неправильной и следует читать:

role: function() { 
    return this.belongsTo(UserRole, 'id'); 
} 

Использование user.role() теперь работает, как ожидается, с этим изменением.

Смежные вопросы