【问题标题】:update model in graphQL giving fields to update and array of id's在 graphQL 中更新模型,提供要更新的字段和 id 数组
【发布时间】:2021-12-02 00:20:09
【问题描述】:

我有问题。 我想创建查询来更新多个模型上的一些文件, 它应该是这样的:

mutation{
    updateInternalOrder( input: {
        state: {
            connect: 1
        }
        id_internal_orders: [1,2] <= here
    }){
        id_internal_orders
        qty
        state {
            id_internal_orders_states,
            name
        }
    } 
}

在此查询中,我想分配(更新)id_internal_orders_states(在州内) 在具有 id: 1 和 2 的 id_internal_orders 中。

怎么做?

Schema(lighthouse-php) 仅在我提供单个 id 而不是数组时才有效:

extend type Mutation {
    updateInternalOrder(input: UpdateInternalOrders! @spread): InternalOrders @update
}

input UpdateInternalOrders {
    id_internal_orders: Int!
    state: InternalOrdersStatesHasOne
    qty: Int
    id_supplier: Int
}

input InternalOrdersStatesHasOne {
    connect: Int
}

【问题讨论】:

    标签: graphql laravel-lighthouse apollo-angular


    【解决方案1】:

    不是这个

    input UpdateInternalOrders {
        id_internal_orders: Int!
        state: InternalOrdersStatesHasOne
        qty: Int
        id_supplier: Int
    }
    

    您的架构应如下所示

    input UpdateInternalOrders {
        id_internal_orders: [Int]!
        state: InternalOrdersStatesHasOne
        qty: Int
        id_supplier: Int
    }
    

    所以这样id_internal_orders 将被定义为一个数组

    错误Argument 2 passed to Nuwave\\Lighthouse\\Execution\\Arguments\\ArgPartitioner::relationMethods() must be an instance of Illuminate\\Database\\Eloquent\\Model, instance of Illuminate\\Database\\Eloquent\\Collection given的解决方法

    您得到的错误是因为您可能正在使用 ORM。传递给突变的数据是一个集合,可能是因为您操作了 ORM 生成的模型。 GraphQL 需要一个数组而不是一个集合。

    您必须将集合转换为数组。但这不推荐。如果有一个带有集合的对象集合。您必须转换集合和父集合的每个对象内的所有集合。这会很快变得复杂。

    或者您可以找到一种方法,不在前端操作您的模型,而是操作数据传输对象。但是在这里我真的帮不了你,因为我不知道数据来自哪里。

    【讨论】:

    • 我试试这个,但不起作用。相反,我有错误:Argument 2 passed to Nuwave\\Lighthouse\\Execution\\Arguments\\ArgPartitioner::relationMethods() must be an instance of Illuminate\\Database\\Eloquent\\Model, instance of Illuminate\\Database\\Eloquent\\Collection given
    • 我进行了编辑以回答您的问题
    猜你喜欢
    • 2020-09-27
    • 2020-02-16
    • 1970-01-01
    • 2019-01-25
    • 2015-09-14
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    相关资源
    最近更新 更多