Я пытаюсь создать новый экземпляр модели и создать в нем экземпляры двух других моделей. Моя схема выглядит следующим образом:
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
, произойдет обратное, и производитель не будет создан.
Я что-то здесь не так делаю?