首页 > 解决方案 > GraphQL - 如何保存嵌套数据

问题描述

你好,我们在寻找最佳连接方式时遇到问题

GraphQL, Rebing GraphQL, Laravel and Eloquent.

主要问题与嵌套的突变有关resources

例如:Manufacturer->Brand->Product

到目前为止,我们已经尝试过:

mutation {
  addManufacturer(
      address: "New York"
      brands: [
          {
              name: "Brand A"
              products: [
                  {
                      name: "Model 1"
                  }
                  {
                      name: "Model 2"
                  }
              ]
          }
          {
              name: "Brand B"
              products: [
                  {
                      name: "Model 3"
                  }
                  {
                      name: "Model 4"
                  }
              ]
          }
      ]
  ) {
      address
  }
}

mutation {
  updateManufacturer(
      id: 1
      address: "LA"
      brands: [
          {
              id: 1
              name: "Brand Z"
              products: [
                  {
                      id: 1
                      name: "Model 10"
                  }
                  {
                      name: "Model 11"
                  }
              ]
          }
      ]
  ) {
      address
  }
}

这基本上意味着:

  • addManufacturer 突变只是关于在数据库中创建新记录

  • updateManufacturer 突变是关于更新具有当前 ID 的记录并创建没有 ID 的记录。

问题:

我们的担忧/问题:

  • 我们应该使用一些不同的方法吗?

  • 我们应该使用具有类似属性的嵌套对象create: [], update: [], delete: []而不是数组吗?

  • 如何将这种数据结构填充到具有关系的 Eloquent 模型中?

  • 可以嵌套这样resourcesGraphQL?或者它是一种反模式?

  • 如何将所有嵌套的“资源”拆分为单独的突变?

标签: phplaraveleloquentgraphql

解决方案


推荐阅读