2016-06-10 190 views
0

使用:Ember 2.5.1,Ember Data 2.5.2與JSONAPIAdapter如何在兩個模型之間創建多個關係?

我正在創建一個應用程序來跟蹤店間庫存轉移。

我有一個名爲轉讓表:

+----+---------------+-------------+----------------+ 
| id | from_store_id | to_store_id | transfer_notes | 
+----+---------------+-------------+----------------+ 
| 1 | 12   | 32   | transfer to 32 | 
| 2 | 9    | 13   | transfer to 13 | 
| 3 | 32   | 9   | transfer to 9 | 
+----+---------------+-------------+----------------+ 

的每一行代表一個轉移,它的始發地和目的地商店。

我也有一個表稱爲

+-----+----------+-------------+------------+ 
| id | store_no | store_state | store_city | 
+-----+----------+-------------+------------+ 
| 12 | tx12  | TX   | Dallas  | 
| 9 | me09  | ME   | Bangor  | 
| 32 | wa32  | WA   | Yakima  | 
| 13 | tn13  | TN   | Memphis | 
+-----+----------+-------------+------------+ 

在我看來,這兩個表之間的關係是:

  1. 的轉移屬於(原產地)店
  2. 轉讓屬於(目的地)商店
  3. A商店可以有許多傳輸作爲起源和目標商店。

如何在Ember Data中定義這些關係?

我最近在休息3年後選擇Ember備份,對於如何定義這些關係或者他們是否正確,我感到非常困惑。其中一件事情真的把我拋棄了from_store_idto_store_id轉移表的自定義名稱。

任何見解歡迎。

如果它的事項我使用西納特拉與JSONAPI::Serializers

回答

3

您可以定義不同的關係一個模型中,甚至本身。有一個在guides

更多信息,在這種情況下,你會做這樣的事情:

//model storehouse.js 
export default Model.extend({ 
    transferOrigins:hasMany('transfer', { inverse: 'storeOrigin' }), 
    transferDestinations:hasMany('transfer', { inverse: 'storeDestination' }), 
    storeNo:attr('string'), 
    storeState:attr('string'), 
    storeCity:attr('string') 
}); 

//model transfer.js 
export default Model.extend({ 
    storeOrigin:belongsTo('storehouse'), 
    storeDestination:belongsTo('storehouse'), 
    fromStoreId:attr('string'), 
    toStoreId:attr('string'), 
    transferNotes:attr('string') 
}); 

既然你有相同的模型多重關係,你幫ember-data瞭解哪些屬性與使用有關的inverse

這裏有一個完整的例子在這個ember-twiddle

+0

當我看着這進一步我試圖找出灰燼,數據是怎麼知道哪些鍵相互映射,以創建關係。 我看起來這個例子是有效的,因爲你在**倉庫**模型中有** fromStoreId ** AND和** toStoreId **。 是否有必要爲倉庫模型定義兩個鍵?他們將永遠是一樣的。在我的模型定義中,我只在我的**商店**表中列出一個** id **列。每個商店應該只有一個ID或這是我必須做的這種關係的工作? – Eric

+0

對不起,這是我的錯。我複製了同一個模型兩次。我已經編輯了答案和燼tw。你不需要''storehouse'模型中的'fromStoreId'和'toStoreId',它們是'transfer'模型的屬性。 –

相關問題