Sequelize は通常、belongsTo() 関連付けを使用するときに外部キーの新しい列を作成します。ただし、シナリオによっては、そうならない場合があります。
そのようなシナリオの 1 つが、提供された User モデルに示されており、Sequelize が role_id 列の作成に失敗します。これは、特に同じプロジェクト内の他のモデルが予期した動作を示す場合に、懸念と混乱を引き起こします。
解決策は、すべてのモデルとその関連付けの登録を一元化することにあります。 1か所。これにより、Sequelize がモデル間の適切な関係を確立できるようになります。
// 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' }] } });
次の手順に従って、すべてのモデルが正しく登録され、それらの関連付けが適切に確立されていることを確認でき、Sequelize が外部キーに必要な列を作成できるようになります。
以上がSequelize が常に外部キー列を作成しないのはなぜですか?これを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。