В extjs связывает связанные данные с полем "через"
Что ж, в моем приложении "id", заданный sencha в магазинах, не всегда будет соответствовать id в базе данных, однако отношения определяются базой данных и, следовательно, "server_ids".
Рассмотрим простые отношения "организация -> событие", в которых одна организация может иметь много событий. Организационная модель:
Ext.define('TestApp.model.Organization', {
extend: 'TestApp.model.Base',
identifier: 'sequential',
fields: [{
name: 'id',
type: 'int',
},
'server_id',
'name',
]
});
Где server_id
это важный ключ для отношений. Я определил события как:
Ext.define('TestApp.model.Event', {
extend: 'TestApp.model.Base',
identifier: 'sequential',
fields: [{
name: 'id'
}, {
name: 'server_id'
}, {
name: 'name'
}, {
name: 'organizationId',
reference: 'TestApp.model.Organization',
}],
});
(Опять же, server_id является важным идентификатором для отношений.).
Теперь данные строятся в два этапа (сначала загружается хранилище организации, после чего загружаются события).
Запрос организации вернет что-то вроде:
[{
"name":"org1"
"server_id":100
}, {
"name":"org2"
"server_id":102
}]
Идентификаторы задаются самим sencha и будут похожи на "0" и "1". Соответствующая загрузка событий выдаст что-то вроде:
[{
"name":"event1_org1"
"server_id": 0
"organization": 100
}, {
"name": "event2_org1"
"server_id": 1
"organization": 100
}, {
"name": "event1_org2"
"server_id": 2
"organization": 102
}]
Теперь, как я могу сказать extjs "понять" ассоциации при загрузке магазина? Когда я смотрю ссылку, нет никаких указаний на foreignkey
или же via
как я и ожидал.