如何在两个模型之间创建多个关系?
How to create multiple relationships between 2 models?
使用:Ember 2.5.1,Ember Data 2.5.2 与 JSONAPIAdapter
我正在创建一个应用程序来跟踪商店间的库存转移。
我有一个 table 叫做 transfers:
+----+---------------+-------------+----------------+
| 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 |
+----+---------------+-------------+----------------+
每一行代表一次转运及其始发地和目的地商店。
我还有一个 table 叫做 stores:
+-----+----------+-------------+------------+
| id | store_no | store_state | store_city |
+-----+----------+-------------+------------+
| 12 | tx12 | TX | Dallas |
| 9 | me09 | ME | Bangor |
| 32 | wa32 | WA | Yakima |
| 13 | tn13 | TN | Memphis |
+-----+----------+-------------+------------+
在我看来,这两个 table 之间的关系是:
- 转移属于(来源)商店
- 转账也属于(目的地)商店
- 一家商店可以有多次转运,既可以是始发店也可以是目的地店。
如何在 Ember 数据中定义这些关系?
我最近选择 Ember 在中断 3 年后重新开始,我对如何定义这些关系或者它们是否正确感到非常困惑。真正让我失望的一件事是 from_store_id 和 to_store_id 在 转会table。
欢迎任何见解。
如果这很重要,我将 Sinatra 与 JSONAPI::Serializers
一起使用
您可以在一个模型内定义不同的关系,甚至与模型本身。 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
使用:Ember 2.5.1,Ember Data 2.5.2 与 JSONAPIAdapter
我正在创建一个应用程序来跟踪商店间的库存转移。
我有一个 table 叫做 transfers:
+----+---------------+-------------+----------------+
| 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 |
+----+---------------+-------------+----------------+
每一行代表一次转运及其始发地和目的地商店。
我还有一个 table 叫做 stores:
+-----+----------+-------------+------------+
| id | store_no | store_state | store_city |
+-----+----------+-------------+------------+
| 12 | tx12 | TX | Dallas |
| 9 | me09 | ME | Bangor |
| 32 | wa32 | WA | Yakima |
| 13 | tn13 | TN | Memphis |
+-----+----------+-------------+------------+
在我看来,这两个 table 之间的关系是:
- 转移属于(来源)商店
- 转账也属于(目的地)商店
- 一家商店可以有多次转运,既可以是始发店也可以是目的地店。
如何在 Ember 数据中定义这些关系?
我最近选择 Ember 在中断 3 年后重新开始,我对如何定义这些关系或者它们是否正确感到非常困惑。真正让我失望的一件事是 from_store_id 和 to_store_id 在 转会table。
欢迎任何见解。
如果这很重要,我将 Sinatra 与 JSONAPI::Serializers
一起使用您可以在一个模型内定义不同的关系,甚至与模型本身。 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