0

と の両方のモデルがUserありUserRoleます。現在、2 つの役割があり、これら 2 つの役割にまたがる多くのユーザーがいます。userのフェッチでロールデータにアクセスする方法が見つかりません。

私が見ているエラーは次のとおり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');
})

何か案は?

4

1 に答える 1