Как вставить дополнительные значения в таблицу "многие ко многим" с помощью Objection.js?
У меня есть следующие таблицы
foo foo_bar bar
--- ------- ---
id foo_id id
bar_id data
num
desc
foo bar
--- ---
1 (to be inserted)
2
Я хочу вставить данные в bar
связывание вставленной записи с существующим элементом на foo
таблица с таблицей отношений "многие ко многим" foo_bar
,
Видимо, я могу сделать это с:
await Bar.query()
.allowInsert('[foo]')
.upsertGraph({ data: 'todo', [{ id: 1 }]}, { relate: true });
мой Bar
модель имеет
static get relationMappings() {
return {
foo: {
join: {
extra: ['num', 'desc'],
from: 'bar.id',
through: {
from: 'foo_bar.bar_id',
to: 'foo_bar.foo_id',
},
to: 'foo.id',
},
modelClass: Foo,
relation: Model.ManyToManyRelation,
},
};
}
Но как вставить значения в num
а также desc
из foo_bar
? Как мне вставить значения в эту среднюю таблицу?
1 ответ
Из свойства docs: extra: Столбцы, перечисленные здесь, автоматически присоединяются к связанным объектам, когда они выбираются и автоматически записываются в таблицу объединения вместо связанной таблицы при вставке.
Вы упомянули дополнительное свойство в вашей модели со столбцами num и desc, поэтому вы можете поместить их непосредственно в upsertGraph следующим образом:
await Bar.query()
.allowInsert('[foo]')
.upsertGraph({ data: 'todo', num: 3, desc: 'bla', [{ id: 1 }]}, { relate: true });