我有这个GraphQL查询:

mutation CreateBudget(
  $revenue: Float!,
  $hours: Int!,
  $projectId: Int!,
) {
  createBudget(
    revenue: $revenue,
    hours: $hours,
    projectId: $projectId,
  ) {
    id
  }
}

作为最佳实践,我想在这里使用camelcase,但在我的数据库中使用snake_case。表格如下所示:

CREATE TABLE IF NOT EXISTS `budgets` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `revenue` double(8,2) NOT NULL,
  `hours` int(11) NOT NULL,
  `project_id` int(10) unsigned NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `budgets_project_id_foreign` (`project_id`),
  CONSTRAINT `budgets_project_id_foreign` FOREIGN KEY (`project_id`) REFERENCES `projects` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

我使用Lighthouse's @rename directive在两个外壳之间进行转换。但是,在运行查询时,当提交查询时,代码的某些部分似乎无法识别项目id,从而导致以下SQL错误:

SQLSTATE[HY000]: General error: 1364 Field 'project_id' doesn't have a default value (SQL: insert into `budgets` (`revenue`, `hours`, `updated_at`, `created_at`) values (1200, 12, 2019-12-03 09:12:13, 2019-12-03 09:12:13))

发送的变量为

variables: {
    revenue: 1200,
    hours: 12,
    projectId: 1
}

这是我的schema.graphql的外观,在预算类型上使用@rename指令:

type Budget {
  id: ID!
  revenue: Float!
  hours: Int!
  projectId: Int! @rename(attribute: "project_id")
  project: Project! @belongsTo
  created_at: DateTime
  updated_at: DateTime
}

type Mutation {
    createBudget(
        revenue: Float!
        hours: Int!
        projectId: Int!
    ): Budget @create(model: "App\\Models\\Budget\\Budget")
}

我肯定忽略了一些简单的东西,但我似乎找不到它。有人想试一试吗?

转载请注明出处:http://www.sdxiangshi.com/article/20230331/1327214.html

随机推荐

  1. 为什么laravel路由必须优先排序,否则页面找不到?

    我正在学习如何在Laravel中使用Redis,并发现了这样一个奇怪的事情:当路由articles/{article}上的路由articles/trending时,路由article/trending可以正常工作:My Router cod...

  2. Laravel中为什么不使用blpop取队列详析

    前言 Redis 的 list 数据结构常用来做消息队列,通常使用的命令有 lpop/rpop ,还有带阻塞版的 blpop/brpop 等。Laravel 5.3 消息队列也是用的 lpop 取消息,为什么不用阻塞版的 blpop 呢?...

  3. 为什么在laravel中我的配置文件会被浏览器访问?

    我已经在服务器上托管了我的项目,我的应用程序正在被黑客攻击,到目前为止,我知道我的配置文件没有像.env,composer.json等一样安全。这些文件可以通过说mydomain/filname直接访问,例如,www.abc.com/.en...

  4. 为什么Laravel供应商:发布返回“找不到可发布的资源”?

    我正在用Laravel 7实现一个包,并使用https://github.com/jeroennoten/Laravel-AdminLTE作为参考。在我的包中,我有以下结构packages/mypackage/src/MyServicePr...

  5. 为什么在Laravel中不起作用?

    我有以下内容:{{ Form::open(array(url = announcements, class = form-inline, method = GET)) }}和表单中的复选框:{{Form::checkbox(only_sub...

  6. 为什么分页laravel忽略请求-跳过,采取

    我想使用skip和take,但是分页不起作用。为什么它不起作用?代码: $posts = DB::table(posts) -orderBy(id,desc) -skip(9) -tak...

  7. 为什么Laravel Pusher不在本地主机上工作,而是在生产上工作?

    我正在做一个小的约会应用程序,我使用Pusher和Laravel。我使用一个名为NewMessage的事件并监听通道msg.{userId}。监听是有效的,但是广播事件不是这样的,但是它在生产上有效。我的代码如下:NewMessage.ph...

  8. 为什么Laravel将我重定向到登录页面,即使我仍在登录?

    我在我的laravel项目中使用了php artisan make:auth来自动创建我的登录和注册页面。即使当我离开页面几分钟,然后返回到我的laravel项目页面时,我仍然是登录的,它会重定向到登录页面。我知道我已经登录了,因为我可以在...

  9. 为什么laravel $request-file返回null?

    我有一个代码,我正在使用另一个应用程序上传文件使用Ajax,这是工作良好。在带有Jquery模式对话框的新应用程序中重用此代码并不能像预期的那样工作。下面是我的表格:{!! Form::open([method = POST, route ...

  10. 为什么Laravel将表创建(迁移)和模型分开?

    我是框架的新手,也是ORM概念的新手。如果Eloquent将一个类映射到一个DB表,那么表的设计不也应该由该类来处理吗?例如,我想创建一个具有name和age属性的Person类(准确地说,是Model )。我必须首先创建一个表,在pers...