ガイド リファレンス ソースコード
public class | ソースコード

BelongsToMany

継承

Association → 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' }});

すべてのメソッドで、永続化されたインスタンス、その主キー、またはその混合を渡すことができます。

const project = await Project.create({ id: 11 });
await user.addProjects([project, 12]);

複数のターゲットインスタンスを設定したいが、属性が異なる場合は、中間モデルの名前を持つプロパティを使用して、インスタンスに属性を設定する必要があります。

p1.UserProjects = {
  started: true
}
user.setProjects([p1, p2], { through: { started: false }}) // The default value is false, but p1 overrides that.

同様に、カスタム属性を持つ結合テーブルからフェッチする場合、これらの属性は、スルーモデルの名前を持つオブジェクトとして利用できます。

const projects = await user.getProjects();
const p1 = projects[0];
p1.UserProjects.started // Is this project started yet?

以下のAPIリファレンスには、関連付けの名前をメソッドに追加してください。例:User.belongsToMany(Project)の場合、ゲッターはuser.getProjects()となります。

参照

メソッド概要

公開メソッド
公開

非同期 add(sourceInstance: Model, newInstances: Model | Model[] | 文字列[] | 文字列 | 数値[] | 数値, options: オブジェクト): Promise

ソースインスタンスに1つまたは複数の行を関連付けます。

公開

非同期 count(instance: Model, options: オブジェクト): Promise<数値>

オプションのwhere句を使用して、現在関連付けられているすべてのものをカウントします。

公開

非同期 create(sourceInstance: Model, values: オブジェクト, options: オブジェクト): Promise

関連付けられたモデルの新しいインスタンスを作成し、これと関連付けます。

公開

非同期 get(instance: Model, options: オブジェクト): Promise<配列<Model>>

オプションのwhere句を使用して、現在これと関連付けられているすべてのものを取得します。

公開

非同期 has(sourceInstance: Model, instances: Model | Model[] | 文字列[] | 文字列 | 数値[] | 数値, options: オブジェクト): Promise<真偽値>

1つまたは複数のインスタンスがこれと関連付けられているかどうかを確認します。

公開

remove(sourceInstance: Model, oldAssociatedObjects: Model | Model[] | 文字列 | 文字列[] | 数値 | 数値[], options: オブジェクト): Promise

1つまたは複数のインスタンスの関連付けを解除します。

公開

非同期 set(sourceInstance: Model, newAssociatedObjects: Model | Model[] | 文字列[] | 文字列 | 数値[] | 数値, options: オブジェクト): Promise

インスタンスまたは主キーの配列を渡すことで、関連付けられたモデルを設定します。

継承概要

クラス Association から
公開

関連付けの種類。

公開
公開

公開メソッド

公開 非同期 add(sourceInstance: Model, newInstances: Model | Model[] | 文字列[] | 文字列 | 数値[] | 数値, options: オブジェクト): Promise ソース

ソースインスタンスに1つまたは複数の行を関連付けます。newInstancesに含まれていない、既に関連付けられているインスタンスの関連付けは解除されません。

パラメーター

名前属性説明
sourceInstance Model

新しいインスタンスを関連付けるソースインスタンス

newInstances Model | Model[] | 文字列[] | 文字列 | 数値[] | 数値
  • オプション

永続化されたインスタンスまたは主キーの単一インスタンスまたは主キー、または混合配列

options オブジェクト
  • オプション

through.findAllbulkCreateupdateに渡されるオプション

options.validate オブジェクト
  • オプション

結合モデルの検証を実行します。

options.through オブジェクト
  • オプション

結合テーブルの追加属性。

戻り値

Promise

公開 非同期 count(instance: Model, options: オブジェクト): Promise<数値> ソース

オプションのwhere句を使用して、現在関連付けられているすべてのものをカウントします。

パラメーター

名前属性説明
instance Model

instance

options オブジェクト
  • オプション

検索オプション

options.where オブジェクト
  • オプション

関連付けられたモデルを制限するためのオプションのwhere句

options.scope 文字列 | 真偽値
  • オプション

関連モデルにスコープを適用するか、false を渡してデフォルトスコープを削除します。

戻り値

Promise<数値>

公開 非同期 create(sourceInstance: Model, values: オブジェクト, options: オブジェクト): Promise ソース

関連付けられたモデルの新しいインスタンスを作成し、これと関連付けます。

パラメーター

名前属性説明
sourceInstance Model

ソースインスタンス

values オブジェクト
  • オプション

ターゲットモデルの値

options オブジェクト
  • オプション

作成と追加に渡されるオプション

options.through オブジェクト
  • オプション

結合テーブルの追加属性

戻り値

Promise

公開 非同期 get(instance: Model, options: オブジェクト): Promise<配列<Model>> ソース

オプションのwhere句を使用して、現在これと関連付けられているすべてのものを取得します。

パラメーター

名前属性説明
instance Model

instance

options オブジェクト
  • オプション

検索オプション

options.where オブジェクト
  • オプション

関連付けられたモデルを制限するためのオプションのwhere句

options.scope 文字列 | 真偽値
  • オプション

関連モデルにスコープを適用するか、false を渡してデフォルトスコープを削除します。

options.schema 文字列
  • オプション

関連モデルにスキーマを適用します。

options.through.where オブジェクト
  • オプション

スルーモデル(結合テーブル)に適用されるオプションのwhere句

options.through.paranoid 真偽値
  • オプション
  • デフォルト:true

trueの場合、結合テーブルからは削除されていないレコードのみが返されます。falseの場合、削除されたレコードと削除されていないレコードの両方が返されます。スルーモデルがparanoidの場合にのみ適用されます。

戻り値

Promise<配列<Model>>

参照

  • オプションの完全な説明についてはModelを参照してください。

公開 非同期 has(sourceInstance: Model, instances: Model | Model[] | 文字列[] | 文字列 | 数値[] | 数値, options: オブジェクト): Promise<真偽値> ソース

これが関連付けられているインスタンスが1つ以上あるかどうかを確認します。インスタンスのリストが渡された場合、すべてのインスタンスが関連付けられている場合にtrueを返します。

パラメーター

名前属性説明
sourceInstance Model

関連付けを確認するソースインスタンス

インスタンス Model | Model[] | 文字列[] | 文字列 | 数値[] | 数値
  • オプション

インスタンスの配列またはそれらの主キーにすることができます。

options オブジェクト
  • オプション

getAssociationsに渡されるオプション

戻り値

Promise<boolean>

public remove(sourceInstance: Model, oldAssociatedObjects: Model | Model[] | string | string[] | number | number[], options: object): Promise source

1つまたは複数のインスタンスの関連付けを解除します。

パラメーター

名前属性説明
sourceInstance Model

インスタンスと関連付けを解除するインスタンス

oldAssociatedObjects Model | Model[] | string | string[] | number | number[]
  • オプション

インスタンスまたはその主キー、またはインスタンスと主キーの混合配列にすることができます。

options オブジェクト
  • オプション

through.destroyに渡されるオプション

戻り値

Promise

public 非同期 set(sourceInstance: Model, newAssociatedObjects: Model | Model[] | string[] | string | number[] | number, options: object): Promise source

インスタンスの配列またはそれらの主キーを渡して、関連付けられたモデルを設定します。渡された配列にないものはすべて、関連付け解除されます。

パラメーター

名前属性説明
sourceInstance Model

新しいインスタンスを関連付けるソースインスタンス

newAssociatedObjects Model | Model[] | 文字列[] | 文字列 | 数値[] | 数値
  • オプション

永続化されたインスタンスまたは主キーの単一インスタンスまたは主キー、または混合配列

options オブジェクト
  • オプション

through.findAllbulkCreateupdatedestroyに渡されるオプション

options.validate オブジェクト
  • オプション

結合モデルの検証を実行します。

options.through オブジェクト
  • オプション

結合テーブルの追加属性。

戻り値

Promise