У меня есть три таблицы: Schools (id, school_name), Schools_Focuses (id, school_id, focus_id) и Focuses (id, focus) и хотят создать метод в моей модели Schools который возвращает все связанные фокусы.Создание отношений «многие ко многим»
я могу выполнить то, что я хочу сделать с этим SQL-запрос:
SELECT focus FROM focuses INNER JOIN schools_focuses ON focuses.id = schools_focuses.focus_id INNER JOIN schools ON schools.id = schools_focuses.school_id WHERE schools.id = 36;
код модели:
// Define Models
exports.School = School = Bookshelf.PG.Model.extend({
tableName: 'schools',
focuses: function() {
return this.hasMany(Focus).through(Schools_Focuses);
}
});
Ошибка:
Possibly unhandled Error: column focuses.schools_focuse_id does not exist, sql: select "focuses".*, "schools_focuses"."id" as "_pivot_id", "schools_focuses"."school_id" as "_pivot_school_id" from "focuses" inner join "schools_focuses" on "schools_focuses"."id" = "focuses"."schools_focuse_id" where "schools_focuses"."school_id" in (?)
Я не хочу иметь этот дополнительный столбец (focuses.schools_focuse_id) в Focuses, потому что фокус может принадлежать более чем одной школе.
Как я могу правильно настроить это? Я играл с внешними ключами и другими клавишами для hasMany() и через(), но не повезло.
Спасибо!
Если у вас есть еще один вопрос, пожалуйста, спросите его, нажав кнопку [Задать Вопрос] (// stackoverflow.com/questions/ask). – ekhumoro