我試圖在舊錶上使用Sequelize,並堅持如何在Sequelize的模型中定義我的數據庫的one-to-many連接。如何使用Sequelize模型對象描述遺留表格一對多連接?
我有以下表格:
pesons:
+----+---------+-------------+
| id | name | language_id |
+----+---------+-------------+
| 1 | Anatoly | 1 |
| 2 | Roman | 2 |
| 3 | Pavel | 1 |
+----+---------+-------------+
和
語言:
+----+---------+
| id | value |
+----+---------+
| 1 | English |
| 2 | Hebrew |
| 3 | Russian |
+----+---------+
就像你所看到的,每Person
可以知道一個Language
,但可以通過不同的Persons
知道相同的Language
。
var Person = sequelize.define('person', {
id : {
field: 'id',
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name : {
field: 'name',
type: Sequelize.TEXT
}
},{
tableName: 'persons',
timestamps: false
});
var Language = sequelize.define('language', {
id : {
field: 'id',
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
value : {
field: 'value',
type: Sequelize.TEXT
}
},{
tableName: 'languages',
timestamps: false
})
據官方手冊:Difference between HasOne and BelongsTo
當有關的關聯信息出現在源模型中,我們可以使用 屬於關聯。
我需要Person
和Language
之間的關係定義爲:
Person.belongsTo(Language);
但它看起來錯了,我和直覺,所以我想獲得一些澄清,從別人。
P.S.爲了清楚起見,我從未使用過任何ORM。
因此,我需要'Language.hasMany(Person)'和'Person.belongsTo(Language)'來使它工作嗎? – Anatoly
是的,例如,如果你不做Language.hasMany(Person),那麼你將無法做到language.getPersons() –