在ExtJS 6.02中,我希望将2个或更多模型连接到单个存储中。
1对1关系:
给定的用户只能与数据库中的单个用户详细信息行关联:
"users": [
{
"id": 1,
"name": "Philip J. Fry",
"userDetail": 1
},
{
"id": 2,
"name": "Hubert Farnsworth",
"userDetail": 2
},
{
"id": 3,
"name": "Turanga Leela",
"userDetail": 3
},
{
"id": 4,
"name": "Amy Wong",
"userDetail": 4
}
]
"usersDetails": [
{
"id": 1,
"email": "jfry@a.com",
"sex": "m"
},
{
"id": 2,
"email": "hubert@a.com",
"sex": "m"
},
{
"id": 3,
"email": "leela@a.com",
"sex": "f"
},
{
"id": 4,
"email": "amy@a.com",
"sex": "m"
}
]
我想把这个放在商店里:
"users": [
{
"id": 1,
"name": "Philip J. Fry",
"email": "jfry@a.com",
"sex": "m"
},
{
"id": 2,
"name": "Hubert Farnsworth",
"email": "hubert@a.com",
"sex": "m"
},
{
"id": 3,
"name": "Turanga Leela",
"email": "leela@a.com",
"sex": "f"
},
{
"id": 4,
"name": "Amy Wong",
"email": "amy@a.com",
"sex": "m"
}
]
1对多关系:
给定用户可以在BD中有多个帖子:
"users": [
{
"id": 1,
"name": "Philip J. Fry",
"userDetail": 1
},
{
"id": 2,
"name": "Hubert Farnsworth",
"userDetail": 2
},
{
"id": 3,
"name": "Turanga Leela",
"userDetail": 3
},
{
"id": 4,
"name": "Amy Wong",
"userDetail": 4
}
]
"posts": [
{
"id": 1,
"user": 1,
"title": "Post 1 title",
"body": "Post 1 body"
},
{
"id": 2,
"user": 1,
"title": "Post 2 title",
"body": "Post 2 body"
},
{
"id": 3,
"user": 2,
"title": "Post 3 title",
"body": "Post 3 body"
},
{
"id": 4,
"user": 3,
"title": "Post 4 title",
"body": "Post 4 body"
}
]
我想要一个包含以下内容的商店:
"items": [
{
"id": 1,
"name": "Philip J. Fry",
"posts": [
{
"id": 1,
"title": "Post 1 title",
"body": "Post 1 body"
},
{
"id": 2,
"title": "Post 2 title",
"body": "Post 2 body"
}
]
},
{
"id": 2,
"name": "Hubert Farnsworth",
"posts": [
{
"id": 3,
"user": 2,
"title": "Post 3 title",
"body": "Post 3 body"
}
]
},
{
"id": 3,
"name": "Turanga Leela",
"userDetail": 3,
"posts": [
{
"id": 4,
"user": 3,
"title": "Post 4 title",
"body": "Post 4 body"
}
]
},
{
"id": 4,
"name": "Amy Wong",
"posts": []
}
]
多对一关系:
这实际上是我的实际问题,我有一个包含多个项的DB表,每个项只能匹配另一个表中的单个项。应该与1对多相同。
多对多关系:
我想基本上和一对多一样?
我似乎找到了这个解决方案:https://fiddle.sencha.com/#fiddle/1hs9&view/editor它并不能涵盖一切,也许还有更好的选择。
1条答案
按热度按时间m2xkgtsf1#
根据Sencha的支持:
连接记录的概念在ExtJS中并不存在,但您可以通过使用呈现器来访问和打印记录关联数据。
我有一个简单的例子向你展示如何实现这一点。请注意,关联的动态加载(在您的示例中)使得使用渲染器有点棘手,但并非不可能,因为关联信息的加载本质上是异步的,渲染器无法等待响应。解决方法是在所有关联存储完成加载后刷新整个网格。
https://fiddle.sencha.com/#fiddle/3d1v&view/editor