2016-03-04 4 views
1

В настоящее время у меня проблема, когда я хочу указать модель книжной полки, какое поле использовать для установления отношения данных.Можно ли указать, какое поле использовать для отношения данных в Bookshelf.js

Кажется, что всегда используется идентификатор (первичный ключ) таблицы моделей; насколько я выяснил, можно установить столбец для отношения, но не использовать его для модели.

, например:

var StopsWithCustomer = bookshelf.Model.extend({ 
    tableName: 'stops', 
    customers: function() { 
     return this.hasOne(customerWithStop, 'id'); 
    } 
}); 

он должен соответствовать по customerWithStop на идентификатор столбца, но он должен использовать столбец customer_id из «остановок», чтобы сделать эту связь; есть ли способ указать это?

ответ

0

Кроме tableName Bookshelf.js также предоставляет idAttribute объект. Это позволит вам переопределить значение по умолчанию для параметра «Bookshelf.js» id.

Обратите внимание, что второй аргумент отношения (например, ваш hasOne()) - это внешний ключ, а не первичный ключ цели.

Пример:

var Language = bookshelf.Model.extend({ 
    tableName: 'languages', 
    idAttribute: 'languageid' 
}); 
var Post = bookshelf.Model.extend({ 
    tableName: 'posts', 
    idAttribute: 'postid', 
    Language: function() { 
    return this.belongsTo(Language,'languageid'); 
    } 
}); 
+1

Благодаря бутон; это было именно то, что я искал :) Исправлено это с сырым запросом до сих пор, но подумал, что должен был быть вариант сделать это. –