BelongsToMany
Расширяет:
Связь «многие ко многим» с таблицей соединения.
Если таблица соединения имеет дополнительные атрибуты, их можно передать в объекте параметров:
UserProject = sequelize.define('user_project', {
role: Sequelize.STRING
});
User.belongsToMany(Project, { through: UserProject });
Project.belongsToMany(User, { through: UserProject });
// through is required!
user.addProject(project, { through: { role: 'manager' }});
Все методы позволяют передать как сохранённую запись, её первичный ключ, или их комбинацию:
Project.create({ id: 11 }).then(project => {
user.addProjects([project, 12]);
});
Если нужно установить несколько целевых записей, но с разными атрибутами, нужно установить атрибуты в записи, используя свойство с именем модели через:
p1.UserProjects = {
started: true
}
user.setProjects([p1, p2], { through: { started: false }}) // The default value is false, but p1 overrides that.
Аналогично, при получении данных через таблицу соединения с пользовательскими атрибутами, эти атрибуты будут доступны как объект с именем модели через.
user.getProjects().then(projects => {
let p1 = projects[0]
p1.UserProjects.started // Is this project started yet?
})
В справочнике API ниже, добавьте имя ассоциации к методу, например, для User.belongsToMany(Project) метод получения будет user.getProjects().
См. также:
Краткое описание методов
| Методы общего доступа | ||
|---|---|---|
| public | add(sourceInstance: Model, newInstances: Model | Model[] | string[] | string | number[] | number, options: Object): Promise Связать одну или несколько строк с исходной записью. | |
| public | Подсчитать все текущие связанные элементы, используя необязательное условие WHERE. | |
| public | Создать новую запись связанной модели и связать её с этой. | |
| public | Получить все текущие связанные элементы, используя необязательное условие WHERE. | |
| public | has(sourceInstance: Model, instances: Model | Model[] | string[] | string | number[] | number, options: Object): Promise<boolean> Проверить, связана ли одна или несколько записей с этой. | |
| public | remove(sourceInstance: Model, oldAssociatedObjects: Model | Model[] | string | string[] | number | number[], options: Object): Promise Отвязать одну или несколько записей. | |
| public | set(sourceInstance: Model, newAssociatedObjects: Model | Model[] | string[] | string | number[] | number, options: Object): Promise Установить связанные модели, передав массив записей или их первичные ключи. | |
Наследуемое описание
| От класса Association | ||
|---|---|---|
| public | Тип ассоциации. | |
| public | ||
| public | ||
Публичные методы
public add(sourceInstance: Model, newInstances: Model | Model[] | string[] | string | number[] | number, options: Object): Promise source
Связывает одну или несколько строк с исходным экземпляром. Это не отвяжет уже связанные экземпляры, которые могут отсутствовать в newInstances.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| sourceInstance | Model |
исходный экземпляр для связывания новых экземпляров | |
| newInstances | Model | Model[] | string[] | string | number[] | number |
|
Один экземпляр или первичный ключ, или смешанный массив персистированных экземпляров или первичных ключей |
| options | Object |
|
Параметры, передаваемые в |
| options.validate | Object |
|
Выполнить валидацию для модели объединения. |
| options.through | Object |
|
Дополнительные атрибуты для таблицы объединения. |
Возвращает:
| Promise |
public count(instance: Model, options: Object): Promise<number> source
Подсчитывает все текущие связанные элементы, используя необязательное условие WHERE.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| instance | Model |
экземпляр | |
| options | Object |
|
опции поиска |
| options.where | Object |
|
Необязательное условие WHERE для ограничения связанных моделей |
| options.scope | string | boolean |
|
Применить область модели, или удалить ее область по умолчанию, передав false |
public get(instance: Model, options: Object): Promise<Array<Model>> source
Получить все текущие связанные с этим, используя необязательное условие where.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| instance | Model |
экземпляр | |
| options | Object |
|
опции поиска |
| options.where | Object |
|
Необязательное условие |
| options.scope | строка | логическое значение |
|
Применить область видимости к связанной модели или удалить ее стандартную область видимости, передав false. |
| options.schema | строка |
|
Применить схему к связанной модели. |
См. также:
- Model для полного объяснения опций
public has(sourceInstance: Model, instances: Model | Model[] | строка[] | строка | число[] | число, options: Object): Promise<логическое значение> source
Проверить, связана ли одна или несколько моделей с этой. Если передается список моделей, функция возвращает true, если все модели связаны.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| sourceInstance | Model |
Исходный экземпляр для проверки ассоциации. | |
| instances | Model | Model[] | строка[] | строка | число[] | число |
|
Может быть массивом экземпляров или их первичными ключами. |
| options | Object |
|
Опции, передаваемые в |
Возвращает:
| Promise<логическое значение> |
public remove(sourceInstance: Model, oldAssociatedObjects: Model | Model[] | string | string[] | number | number[], options: Object): Promise source
Отсоединить один или несколько экземпляров.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| sourceInstance | Model |
Экземпляр, который нужно отсоединить от других экземпляров | |
| oldAssociatedObjects | Model | Model[] | string | string[] | number | number[] |
|
Может быть экземпляром или его первичным ключом, или смешанным массивом экземпляров и первичных ключей |
| options | Object |
|
Опции, передаваемые в |
Возвращаемое значение:
| Promise |
public set(sourceInstance: Model, newAssociatedObjects: Model | Model[] | string[] | string | number[] | number, options: Object): Promise source
Устанавливает связанные модели, передавая массив экземпляров или их первичных ключей. Все, что не входит в переданный массив, будет отсоединено.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| sourceInstance | Model |
Исходный экземпляр для связывания с новыми экземплярами | |
| newAssociatedObjects | Model | Model[] | string[] | string | number[] | number |
|
Один экземпляр или первичный ключ, или смешанный массив сохранённых экземпляров или первичных ключей |
| options | Object |
|
Опции, передаваемые в |
| options.validate | Object |
|
Выполнить валидацию для модели соединения |
| options.through | Object |
|
Дополнительные атрибуты для таблицы соединения. |
Возвращаемое значение:
| Promise |
Copyright © 2014–present Sequelize contributors
Licensed under the MIT License.
https://sequelize.org/v5/class/lib/associations/belongs-to-many.js~BelongsToMany.html