Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Как получить связанные данные из модели? (https://javascript.ru/forum/extjs/51108-kak-poluchit-svyazannye-dannye-iz-modeli.html)

Infarch 24.10.2014 11:34

Как получить связанные данные из модели?
 
Здравствуйте.

У меня есть две модели, отношение "один ко многим". Насколько я припоминаю, есть возможность сгенерировать в родительской модели метод для получения связанных данных. Но вот как? Вот что я написал:

Ext.define("PM.model.entity.Process", {
	extend: "Ext.data.Model",
	idProperty: "ID",
	fields: [
		"Name"
	],
	proxy: {
		type: "ajax",
		pageParam: "",
		limitParam: "",
		startParam: "",
		reader: {
			type: "json",
			rootProperty: "data",
			messageProperty: "msg"
		},
		writer: {
			type: "json"
		},
		api: {
			create: "/json?cmd=pm.process.create",
			read: "/json?cmd=pm.process.read",
			update: "/json?cmd=pm.process.update",
			destroy: "/json?cmd=pm.process.destroy"
		}
	}
});

Ext.define("PM.model.entity.SubjectField", {
	extend: "Ext.data.Model",
	idProperty: "ID",
	fields: [
		{ name: "PMProcess_ID",
			type: "int",
			reference: {
				parent: "entity.Process",
				association: "FieldsByProcess",
				role: "process",
				inverse: "subjectFields"
			}
		},
		{ name: "Name",
			type: "string"
		}
	],
	proxy: {
		type: "ajax",
		reader: {
			type: "json",
			rootProperty: "data",
			messageProperty: "msg"
		},
		writer: {
			type: "json"
		},
		api: {
			create: "/json?cmd=pm.subjectfield.create",
			read: "/json?cmd=pm.subjectfield.read",
			update: "/json?cmd=pm.subjectfield.update",
			destroy: "/json?cmd=pm.subjectfield.destroy"
		}
	}
});


Много SubjectField может принадлежать одному Process. У меня есть грид со списком процессов. В обработчике клика я получаю выбранную модель и хотел бы получить связанные филды с помощью автоматически сгенерированного метода. В теории, это должен был бы быть метод subjectFields(), но вот я получаю ошибку что такого метода нет. Что не так? Я где то напорол в определении связи?

Infarch 24.10.2014 16:40

Разобрался. Надо было в Process добавить ассоциацию:
hasMany: {
		foreignKey: "PMProcess_ID",
		associationKey: "subjectFields",
		name: "subjectFields",
		model: "PM.model.entity.SubjectField"
	},


и имя подчиненной модели полностью написать. В ней же ничего писать не надо.


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