关联类方法中的现有字段 sequelize
Posted
技术标签:
【中文标题】关联类方法中的现有字段 sequelize【英文标题】:associate existing fields from class methods sequelize 【发布时间】:2016-07-28 17:10:07 【问题描述】:我有这两个从 CLI 生成的 Sequelize 模型
'use strict';
module.exports = function(sequelize, DataTypes)
var ticket_sold = sequelize.define('ticket_sold',
ticket_id: DataTypes.INTEGER,
bus_id: DataTypes.INTEGER,
departure: DataTypes.INTEGER,
destination: DataTypes.INTEGER,
passenger_id: DataTypes.INTEGER,
amount: DataTypes.FLOAT,
status: DataTypes.BOOLEAN,
is_deleted: DataTypes.BOOLEAN
,
classMethods:
associate: function(models)
);
return ticket_sold;
;
和
'use strict';
module.exports = function(sequelize, DataTypes)
var locations = sequelize.define('locations',
name: DataTypes.STRING,
status: DataTypes.BOOLEAN,
is_deleted: DataTypes.BOOLEAN
,
classMethods:
associate: function(models)
);
return locations;
;
我需要将 Departure 和 Destination 与 location 字段的 Id 相关联。我不能只使用 has many/belongsto,因为它会创建另一个字段。
我试着做 ticket_sold.departure.belongsTo(models.locations, onDelete:"级联", 外键: 允许空:假 ) 但是没有用。
如何将这两个字段与位置表相关联?
【问题讨论】:
【参考方案1】:您需要使用targetKey
property
来自文档:
目标键是源模型上的外键列指向的目标模型上的列。默认情况下,belongsTo 关系的目标键将是目标模型的主键。要定义自定义列,请使用 targetKey 选项。
因此,在您的情况下,您需要执行以下操作:
tickets_sold.belongsTo( models.locations, targetKey: 'departure' );
tickets_sold.belongsTo( models.locations, targetKey: 'destination' );
【讨论】:
以上是关于关联类方法中的现有字段 sequelize的主要内容,如果未能解决你的问题,请参考以下文章
mysql多表查询:现有两个表a,b,我想同时查询a和b中的数据
原则 2:错误:类“..\..”没有名为“...”的字段或关联