データベースには制約はありませんが、間違いなく実行できます。あなたの場合、ModuleLabel
のmodule_id
フィールドはuser
またはpermit
テーブルを参照することがあります。私はあなたにいくつかの実装スケッチを示すことができますが、私はスキーマを再構築することを提案します。外部キー制約がUser
およびPermit
になるUserLabel
およびPermitLabel
モデルを作成します。ただし、以下は関連がUser
またはPermit
両方を照会するとき、私たちはModuleLabel
モデルに参加できるようにする上、あなたはそれをあなたの方法
// in User model definition
classMethods: {
associate: function(models){
this.hasMany(models.ModuleLabel, { foreignKey: 'module_id', constraints: false });
}
}
// in Permit model definition
classMethods: {
associate: function(models){
this.hasMany(models.ModuleLabel, { foreignKey: 'module_id', constraints: false });
}
}
を行うことができる方法です。最も重要な部分は、データベース制約の作成を妨げるconstraints: false
について覚えておくことです。次へ移りましょう。 Label
モデルには関連付けは必要なく、フィールド宣言のみが必要です。最後のモデルは
SELECT * FROM Permits
LEFT OUTER JOIN ModuleLabels
ON Permits.id = ModuleLabels.module_id
INNER JOIN Labels
ON ModuleLabels.label_id = Labels.id
AND Label.module_name = 'permit';
である以下に示す次のようなSQLを生成し、ご希望のクエリを実行するために、クエリの上、この
を行うことができ、今
ModuleLabel
ですこれらのテーブル間に外部キー関係がありますか? –
@AtulAgrawal:更新された質問 – Kepler
ここで進歩がありますか? – piotrbienias