2016-07-28 19 views
1

私はCLI関連付ける既存のフィールドは

'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; 
 
};

Iから生成されたこの2つのSequelizeモデルを持っているsequelize DepartureとDestinationをLocationフィールドのIdに関連付ける必要があります。私は他のフィールドを作成するので、たくさん持っている/使用しているものを使うことはできませんでした。

Iは tickets_sold.departure.belongsTo(models.locationsを{ onDelete: "カスケード"、 のForeignKey:{ ALLOWNULL:偽 }})を実行しようとした それは役に立たないものでした。

どのようにして2つのフィールドをロケーションテーブルに関連付けることができますか?

答えて

0

あなたはドキュメントからtargetKey property

を使用する必要があります。

ターゲット・キーがそれにソースモデルポイントの外部キー列ターゲットモデル上の列です。デフォルトでは、belongsToリレーションのターゲットキーはターゲットモデルのプライマリキーになります。カスタム列を定義するには、targetKeyオプションを使用します。

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

だからあなたの場合には、あなたは次のように何かをする必要があります。

関連する問題