Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Many to Many (https://javascript.ru/forum/extjs/60175-many-many.html)

Infarch 15.12.2015 14:16

Many to Many
 
Здравствуйте.

Возникла у меня одна непонятка... Хочу сделать связь many2many между двумя моделями. Для связи используется третья модель, вот так:

Ext.define('SafetyRound.model.entity.SafetyRoundTrade', {
	extend: 'Ext.data.Model',
	idProperty: 'ID',
	fields: [
		{ name: 'ID', type: 'int' },
		{ name: 'SafetyRoundProject_ID', type: 'int' },
		'Name', 'Contractor'
	],

	manyToMany: {
		TradeUsers: {
			type: 'SafetyRound.model.entity.SafetyRoundUser',
			role: 'users',
			field: 'SafetyRoundUser_ID',
			right: {
				field: 'SafetyRoundTrade_ID',
				role: 'trades'
			}
		}
	}
});

Ext.define('SafetyRound.model.entity.SafetyRoundUser', {
	extend: 'Ext.data.Model',
	idProperty: 'ID',
	fields: [
		{ name: 'ID', type: 'int' },
		{ name: 'SafetyRoundProject_ID', type: 'int' },
		{ name: 'User_ID', type: 'int' }
	]
});

// модель-связка

Ext.define('SafetyRound.model.entity.SafetyRoundTradeUser', {
	extend: 'Ext.data.Model',
	idProperty: 'ID',
	fields: [
		{ name: 'ID', type: 'int' },
		{ name: 'SafetyRoundTrade_ID', type: 'int' },
		{ name: 'SafetyRoundUser_ID', type: 'int' }
	]

});

Я тут опустил описания прокси для краткости, там нет ничего особенного. Зато особенность есть в том, что ВСЕ нужные для работы данные уже загружены в свои сторы перед запуском приложения. С сервера уже ничего тянуть не надо. И тем не менее, когда я пишу вот так:
var m = Ext.create('SafetyRound.model.entity.SafetyRoundTrade', {
		ID: 3
	});
	var u = m.users();
	//u.load();

то получаю пустой стор. Если вызвать метод load то он лезет на сервер по настройкам прокси для SafetyRoundUser, при этом передавая фильтр:
filter:"[{"property":"SafetyRoundTrade_ID","value":3,"exact Match":true}]"
Как мне научить экст юзать данные из памяти, ежели такие есть уже?


Часовой пояс GMT +3, время: 13:17.