2016-07-28 28 views
1

我從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; 
 
};

我產生這種兩個Sequelize車型需要將出發地和目的地關聯到位置字段的ID。我不能只用很多/屬於它,因爲它創造了另一個領域。

我試着做 tickets_sold.departure.belongsTo(models.locations,{ onDelete: 「CASCADE」, FOREIGNKEY:{ 允許爲空:假 }} ) 但它是沒有用的。

如何將兩個字段與位置表關聯?

回答

0

您需要使用targetKey property

從文檔:

目標關鍵是對目標模型的列在源模型指向外鍵列。默認情況下,belongsTo關係的目標關鍵字將成爲目標模型的主關鍵字。要定義自定義列,請使用targetKey選項。

所以你的情況,你需要做這樣的事情:

tickets_sold.belongsTo(models.locations, { targetKey: 'departure' }); 
tickets_sold.belongsTo(models.locations, { targetKey: 'destination' });