Sequelize erstellt normalerweise eine neue Spalte für Fremdschlüssel, wenn die Zugehörigkeit zu() verwendet wird. In einigen Szenarien ist dies jedoch möglicherweise nicht der Fall.
Ein solches Szenario ist im bereitgestellten Benutzermodell dargestellt, bei dem Sequelize die Spalte „role_id“ nicht erstellen kann. Dies führt zu Bedenken und Verwirrung, insbesondere wenn andere Modelle im selben Projekt das erwartete Verhalten zeigen.
Die Lösung liegt in der Zentralisierung der Registrierung aller Modelle und ihrer Zuordnungen in ein Ort. Dadurch wird sichergestellt, dass Sequelize die richtigen Beziehungen zwischen Modellen herstellen kann.
// database.js const fs = require('fs'); const path = require('path'); const Sequelize = require('sequelize'); const db = {}; const sequelize = new Sequelize(/* your connection settings here */); const models = path.join(__dirname, 'models'); fs.readdirSync(models).filter(file => file.indexOf('.') !== 0 && file !== 'basename' && file.slice(-3) === '.js').forEach(file => { const model = sequelize['import'](path.join(models, file)); db[model.name] = model; }); Object.keys(db).forEach(modelName => { if (db[modelName].associate) { db[modelName].associate(db); } }); db.Sequelize = Sequelize; db.sequelize = sequelize; module.exports = db;
// some_module.js const db = require('../database'); const users = await db.user.findAll({ where: { [db.Sequelize.Op.or]: [{ first_name: 'Smith' }, { last_name: 'Smith' }] } });
Indem Sie diese Schritte befolgen, Sie können sicherstellen, dass alle Modelle korrekt registriert und ihre Zuordnungen ordnungsgemäß eingerichtet sind, sodass Sequelize die erforderlichen Spalten für Fremdschlüssel erstellen kann.
Das obige ist der detaillierte Inhalt vonWarum erstellt Sequelize nicht immer Fremdschlüsselspalten und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!