Extjs 6.5-查找关联类型(hasOne、hasMany、belongsTo等)



我将我的应用程序从Sencha Touch 2.4升级到ExtJs 6.5.3。

在Sencha Touch 2.4上,有一个名为getType((的Association(Ext.data.Association.Association(函数,它以字符串形式返回关联类型,例如:;hasOne";。

例如,在这里(Sencha Touch 2.4的模型源代码(:

for (i = 0; i < associationCount; i++) {
association = associations[i];
associationName = association.getName();
type = association.getType();
allow = true;
if (associationType) {
allow = type == associationType;
}
if (allow && type.toLowerCase() == 'hasmany') {

在我的项目中,通过理解关联类型是hasmany、hasone还是belongsto,我可以"选择";创建什么类型的SQL查询(不是我最初写的,但这是一个大项目,我无法联系最初的开发人员(,所以这对我来说是必须的。

我试图查看Extjs 6/6.5文档,但没有找到任何内容。它似乎很久以前就被弃用了。

我正在考虑插入";类型";在模型内部作为模型和类型的对象,例如:

{ 
'MyProject.model.Receipt': 'hasone',
'MyProject.model.Order': 'hasmany',
'MyProject.model.invoice': 'belongsto',
...
}

然后尝试从模型本身访问它并通过关联找到类型";"父";模型

对于这样一项(假设是(简单的任务来说,这感觉像是一种风险和过度消耗。

我也试着在网上寻找解决方案,但似乎从来没有人试图找到这样的解决方案。

谢谢

作为开发人员,记录上的associations属性有点棘手,对我们来说有点模糊。如果在关联中使用inverse属性,它们有时会出现在associations属性中,这是有问题的。我向Sencha Support提出了一个问题,要求提供一种可靠的方法来返回记录中的实际关联,但我也提出了一种临时解决方案来确定它们是否真的是一个关联。我把这个想法扩展到了可能对你的类型有帮助的东西上?但你必须测试一下,以确定它是否真的适合你。。。我在代码中只使用了hasOnehasMany,所以我不知道这是否适用于belongsTo

这是Fiddle,这是代码:

Ext.override(Ext.data.Model, {
isActualAssociation: function (role) {
var isThing = !role.instanceName || role.fromSingle;
if (!isThing) {
console.log('found weirdo', role)
}
return isThing;
},
getAssociationType: function (association) {
if (association.fromSingle) {
return 'hasOne';
}
else if (association.storeName) {
return 'hasMany';
}
return 'belongsTo';
}
});

最新更新