Lighthouse-PHP GraphQL如何通过ID数组批量更新InternalOrder字段
解决方案
你可以通过Lighthouse-PHP内置的@updateMany指令实现批量更新需求,具体调整步骤如下:
步骤1:修改Schema定义
- 首先调整
UpdateInternalOrders输入类型,将id_internal_orders字段从单值Int改为Int数组 - 将原Mutation的
@update指令替换为@updateMany,同时将返回值改为数组类型,适配多条返回结果
修改后的Schema代码如下:
extend type Mutation { # 替换为@updateMany,返回值改为数组 updateInternalOrder(input: UpdateInternalOrders! @spread): [InternalOrders!]! @updateMany(primaryKey: "id_internal_orders") } input UpdateInternalOrders { # 改为非空Int数组,支持传入多个ID id_internal_orders: [Int!]! state: InternalOrdersStatesHasOne qty: Int id_supplier: Int } input InternalOrdersStatesHasOne { connect: Int }
注:如果你的
InternalOrders模型主键已经是id_internal_orders,可以省略@updateMany的primaryKey参数,否则需要显式指定批量匹配的字段。
步骤2:调整Mutation查询语句
你的预期写法基本可用,只需要调整返回值适配数组结构即可,示例如下:
mutation{ updateInternalOrder( input: { state: { connect: 1 } id_internal_orders: [1,2] }){ id_internal_orders qty state { id_internal_orders_states, name } } }
调用后会返回所有更新成功的内部订单数据,同时完成id为1、2的两个订单的state关联更新。
内容的提问来源于stack exchange,提问作者burasuk
相关产品推荐
相关产品推荐

