Lighthouse GraphQL - несколько вложенных мутаций не сохраняются - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь создать новый экземпляр модели и создать в нем экземпляры двух других моделей. Моя схема выглядит следующим образом:

extend type Mutation @middleware(checks: ["auth:api"]) {
    createProduct(input: CreateProductInput! @spread): Product @create
}

"TYPES"

type Product {
    id: ID!
    name: String!
    sku: String!

    manufacturer: ProductManufacturer! @belongsTo
    category: ProductCategory! @belongsTo
}

type ProductManufacturer {
    id: ID!
    name: String!
    products: [Product!]! @hasMany
}

type ProductCategory {
    id: ID!
    name: String!
    products: [Product!]! @hasMany
}

"INPUTS"

input CreateProductInput {
    name: String!
    sku: String!
    manufacturer: CreateProductManufacturerRelation!
    category: CreateProductCategoryRelation!
}

input CreateProductManufacturerRelation {
    connect: ID
    create: CreateProductManufacturerInput
}

input CreateProductCategoryRelation {
    connect: ID
    create: CreateProductCategoryInput
}

input CreateProductManufacturerInput {
    name: String!
}

input CreateProductCategoryInput {
    name: String!
}

Это прекрасно работает, если я использую connect: как для производителя, так и для категории. Это также работает, я использую connect: для одного и create: для другого.

Если я попытаюсь указать create: как производителя, так и категорию, мутация завершится ошибкой со следующей ошибкой. (Запрос и ошибка ниже)

mutation {
  createProduct(input: {
    name:"My amazing product"
    sku:"SKU0001"
    manufacturer: {
      create: {
        name: "Awesome Corp"
      }
    }
    category: {
      create: {
        name: "Doodads"
      }
    }
  }){
    id
  }
}

"debugMessage": "SQLSTATE[HY000]: General error: 1364 Field 'category_id' doesn't have a default value (SQL: insert into `products` (`name`, `sku`, `manufacturer_id`) values (My amazing product, SKU0001, 21))"

Так что, похоже, он даже не пытается создать новую категорию. Любопытно, что если я переверну порядок отношений между производителем и категориями в CreateProductInput, произойдет обратное, и производитель не будет создан.

Я что-то здесь не так делаю?

...