如何在ExtJS中加入模型?

3hvapo4f  于 2022-09-26  发布在  其他
关注(0)|答案(1)|浏览(172)

在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它并不能涵盖一切,也许还有更好的选择。

m2xkgtsf

m2xkgtsf1#

根据Sencha的支持:
连接记录的概念在ExtJS中并不存在,但您可以通过使用呈现器来访问和打印记录关联数据。
我有一个简单的例子向你展示如何实现这一点。请注意,关联的动态加载(在您的示例中)使得使用渲染器有点棘手,但并非不可能,因为关联信息的加载本质上是异步的,渲染器无法等待响应。解决方法是在所有关联存储完成加载后刷新整个网格。
https://fiddle.sencha.com/#fiddle/3d1v&view/editor

相关问题