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(function (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(function (projects) {
let p1 = projects[0]
p1.UserProjects.started // Is this project started yet?
})
В справке API ниже, добавьте имя связи к методу, например, для User.belongsToMany(Project) метод-получатель будет user.getProjects().
См. также:
Краткое описание методов
| Общедоступные методы | ||
|---|---|---|
| public | add(newAssociation(s): Модель[] | Модель | строка[] | строка | число[] | Число, options: Объект): Promise Связать одну или несколько строк с | |
| public | count(options: Объект): Promise<Целое число> Подсчитать все текущие связанные элементы, используя необязательное условие WHERE. | |
| public | create(values: Объект, options: Объект): Promise Создать новую запись связанной модели и связать её с данной. | |
| public | Получить все текущие связанные элементы, используя необязательное условие WHERE. | |
| public | has(instance(s): Модель[] | Модель | строка[] | Строка | число[] | Число, options: Объект): Promise<boolean> Проверить, связана ли одна или несколько записей с данной. | |
| public | Отвязать одну или несколько записей. | |
| public | Установить связанные модели, передав массив записей или их первичных ключей. | |
Краткое описание унаследованных методов
| Из класса Связь | ||
|---|---|---|
| public | associationType: строка Тип связи. | |
| public | ||
| public | ||
Публичные методы
public add(newAssociation(s): Model[] | Model | string[] | string | number[] | Number, options: Object): Promise source
Связать одну или несколько строк с this.
Параметры:
| Name | Type | Attribute | Description |
|---|---|---|---|
| newAssociation(s) | Model[] | Model | string[] | string | number[] | Number |
|
Один экземпляр или первичный ключ, или смешанный массив сохраненных экземпляров или первичных ключей |
| options | Object |
|
Параметры, переданные в |
| options.validate | Object |
|
Запустить валидацию для модели соединения. |
| options.through | Object |
|
Дополнительные атрибуты для таблицы соединения. |
Возвращает:
| Promise |
public count(options: Object): Promise<Integer> source
Подсчитать все, что в данный момент связано с этим, используя необязательное условие where.
Параметры:
| Name | Type | Attribute | Description |
|---|---|---|---|
| options | Object |
| |
| options.where | Object |
|
Необязательное условие where для ограничения связанных моделей |
| options.scope | String | Boolean |
|
Применить область видимости к связанной модели или удалить ее область видимости по умолчанию, передав false |
Возвращает:
| Promise<Integer> |
public create(values: Object, options: Object): Promise source
Создать новый экземпляр связанной модели и связать его с этим.
Параметры:
| Name | Type | Attribute | Description |
|---|---|---|---|
| values | Object |
| |
| options | Object |
|
Параметры, переданные для создания и добавления |
| options.through | Object |
|
Дополнительные атрибуты для таблицы соединения |
Возвращает:
| Promise |
public get(options: Object): Promise<Array<Model>> source
Получить все, что в данный момент связано с этим, используя необязательное условие where.
Параметры:
| Name | Type | Attribute | Description |
|---|---|---|---|
| options | Object |
| |
| options.where | Object |
|
Необязательное условие where для ограничения связанных моделей |
| options.scope | String | Boolean |
|
Применить область видимости к связанной модели или удалить ее область видимости по умолчанию, передав false |
| options.schema | String |
|
Применить схему к связанной модели |
Возвращает:
| Promise<Array<Model>> |
См. также:
- Model.findAll для полного объяснения параметров
public has(instance(s): Model[] | Model | string[] | String | number[] | Number, options: Object): Promise<boolean> source
Проверить, связаны ли один или несколько экземпляр(ов) с этим. Если передан список экземпляров, функция возвращает true, если все экземпляры связаны
Возвращает:
| Promise<boolean> |
публичный remove(oldAssociated: Модель | Строка | Число, options: Объект): Обещание источник
Отвязать одну или несколько сущностей.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| oldAssociated | Модель | Строка | Число |
|
Может быть экземпляром или его первичным ключом, или смешанным массивом экземпляров и первичных ключей |
| options | Объект |
|
Параметры, передаваемые в |
Возвращаемое значение:
| Обещание |
публичный set(newAssociations: Массив<Модель|Строка|Число>, options: Объект): Обещание источник
Установить связанные модели, передав массив экземпляров или их первичных ключей. Всё, что не входит в переданный массив, будет отвязано.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| newAssociations | Массив<Модель|Строка|Число> |
|
Массив сохранённых экземпляров или первичных ключей экземпляров для связывания с этим. Передайте |
| options | Объект |
|
Параметры, передаваемые в |
| options.validate | Объект |
|
Выполнить валидацию для модели соединения |
| options.through | Объект |
|
Дополнительные атрибуты для таблицы соединения. |
Возвращаемое значение:
| Обещание |
Copyright © 2014–present Sequelize contributors
Licensed under the MIT License.
https://sequelize.org/v4/class/lib/associations/belongs-to-many.js~BelongsToMany.html