You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hasura GraphQL:如何批量插入含关联讲座的多个活动

批量插入关联的活动与讲座(一次Mutation实现)

可以通过嵌套批量插入实现需求,无需逐个发送Mutation。以下是具体方案:

正确的嵌套插入写法

你之前的尝试中,lectures_data.data仅传入了单个对象,实际上它支持接收数组,以此实现单个活动对应多个讲座的批量插入。数据库会自动为新生成的event ID赋值给对应讲座的event_id外键,无需手动指定。

Mutation 定义

mutation insertEvents($objects: [events_insert_input!]!) {
  insert_events(objects: $objects) {
    affected_rows
    returning {
      id
      lectures {
        id
        lecture_title
      }
    }
  }
}

变量示例(多个活动+对应多讲座)

{
  "objects": [
    {
      "datetime": "2024-05-20 10:00:00",
      // 补充events表的其他必填字段
      "lectures_data": {
        "data": [
          {
            "lecture_title": "基础入门讲座",
            "is_done": false,
            "is_planned": true,
            "order": 1
          },
          {
            "lecture_title": "进阶实践讲座",
            "is_done": false,
            "is_planned": true,
            "order": 2
          }
        ]
      }
    },
    {
      "datetime": "2024-05-21 14:00:00",
      // 补充events表的其他必填字段
      "lectures_data": {
        "data": [
          {
            "lecture_title": "行业趋势分享",
            "is_done": false,
            "is_planned": true,
            "order": 1
          }
        ]
      }
    }
  ]
}

关于你第二种尝试的问题

分开插入events和lectures的方式不可行,因为event的ID是数据库自动生成的,无法提前预知并赋值给lectures的event_id。而嵌套插入属于同一Mutation内的原子操作,数据库会自动处理外键关联,避免了这个问题。

结论:无需通过forEach循环逐个发送请求,用上述嵌套批量插入的写法即可一次完成所有数据插入。

内容的提问来源于stack exchange,提问作者oskar333

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:07:29