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つまたは複数の行を関連付けます。 |
|
公開 |
オプションのwhere句を使用して、現在関連付けられているすべてのものをカウントします。 |
|
公開 |
関連付けられたモデルの新しいインスタンスを作成し、これと関連付けます。 |
|
公開 |
オプションの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 | オブジェクト |
|
|
options.validate | オブジェクト |
|
結合モデルの検証を実行します。 |
options.through | オブジェクト |
|
結合テーブルの追加属性。 |
公開 非同期 count(instance: Model, options: オブジェクト): Promise<数値> ソース
オプションのwhere句を使用して、現在関連付けられているすべてのものをカウントします。
公開 非同期 create(sourceInstance: Model, values: オブジェクト, options: オブジェクト): 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の場合、結合テーブルからは削除されていないレコードのみが返されます。falseの場合、削除されたレコードと削除されていないレコードの両方が返されます。スルーモデルがparanoidの場合にのみ適用されます。 |
参照
- オプションの完全な説明についてはModelを参照してください。
公開 非同期 has(sourceInstance: Model, instances: Model | Model[] | 文字列[] | 文字列 | 数値[] | 数値, options: オブジェクト): Promise<真偽値> ソース
これが関連付けられているインスタンスが1つ以上あるかどうかを確認します。インスタンスのリストが渡された場合、すべてのインスタンスが関連付けられている場合にtrueを返します。
public remove(sourceInstance: Model, oldAssociatedObjects: Model | Model[] | string | string[] | number | number[], options: object): Promise source
1つまたは複数のインスタンスの関連付けを解除します。
public 非同期 set(sourceInstance: Model, newAssociatedObjects: Model | Model[] | string[] | string | number[] | number, options: object): Promise source
インスタンスの配列またはそれらの主キーを渡して、関連付けられたモデルを設定します。渡された配列にないものはすべて、関連付け解除されます。
パラメーター
名前 | 型 | 属性 | 説明 |
sourceInstance | Model | 新しいインスタンスを関連付けるソースインスタンス |
|
newAssociatedObjects | Model | Model[] | 文字列[] | 文字列 | 数値[] | 数値 |
|
永続化されたインスタンスまたは主キーの単一インスタンスまたは主キー、または混合配列 |
options | オブジェクト |
|
|
options.validate | オブジェクト |
|
結合モデルの検証を実行します。 |
options.through | オブジェクト |
|
結合テーブルの追加属性。 |