首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组到字符串转换即使在Laravel灯塔中暗示类型

数组到字符串转换即使在Laravel灯塔中暗示类型
EN

Stack Overflow用户
提问于 2021-05-08 16:25:48
回答 1查看 415关注 0票数 2

你好

当我执行我的突变来创建一个产品时,我会得到以下错误:Array to string conversion。全日志堆栈这里

对于上下文,要创建一个product,必须创建/关联一个brand和一个category。您还可以指定提交产品的user,但这不是强制性的。

我试着去理解错误并找到解决方案,但是我真的找不到这个问题的根源。

下面是我的模式:

代码语言:javascript
运行
复制
   type mutation {
      # create_brand ... (crud)
      # create_product_category ... (crud)
      
      create_product(input: CreateProductInput! @spread): Product! @create
      update_product(input: UpdateProductInput! @spread): Product! @update
      remove_product(id: ID!): Product! @delete
    }
    
  input CreateProductCategoryInput {
    name: String!
   }
 
 input CreateBrandInput {
    name: String!
   }
    
  input CreateProductInput {
    name: String!
    # ....

    submitted_by: CreateUserBelongsTo
    brand: CreateBrandBelongsTo!
    product_category: CreateProductCategoryBelongsTo!
  }

 input CreateBrandBelongsTo {
    connect: ID
    create: CreateBrandInput
    update: UpdateBrandInput
    disconnect: Boolean
    delete: Boolean
  }

input CreateProductCategoryBelongsTo {
    connect: ID
    create: CreateProductCategoryInput
    update: UpdateProductCategoryInput
    disconnect: Boolean
    delete: Boolean
  }

我尝试不指定submitted_by,这是可选的。我的GraphQL请求是这样执行的:

代码语言:javascript
运行
复制
mutation($createProductInput: CreateProductInput!) {
  create_product(input: $createProductInput) {
    name
    description
    brand {
      name
    }
    product_category {
      name
    }
    submitted_by {
      username
    }
  }
}

下面是graphql请求的变量:

代码语言:javascript
运行
复制
{
  "createProductInput": {
    "name": "RTX 3090",
    "release_date": "2022-05-08T15:26:35+01:00",
    "cover_image": "https://s3.rekk.app/media/rtx.png",
    "description": "Description here",
    "brand": {
      "create": {"name": "NVIDIA"}
    },
    "product_category": {
      "create": {"name": "Graphical Card"}
    }
  }
}

如果需要,可以在这里找到ProductProductCategoryBrand模型:https://gist.github.com/SirMishaa/987fd95255dee9fe19d2cba5b1d20e25

期望行为/解决方案

输出/日志

单击以展开

代码语言:javascript
运行
复制
{
  "errors": [
    {
      "debugMessage": "Array to string conversion",
      "message": "Internal server error",
      "extensions": {
        "category": "internal"
      },
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "create_product"
      ],
      "trace": [
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Support/Str.php",
          "line": 524,
          "call": "Illuminate\\Foundation\\Bootstrap\\HandleExceptions::handleError()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/QueryException.php",
          "line": 57,
          "call": "Illuminate\\Support\\Str::replaceArray()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/QueryException.php",
          "line": 40,
          "call": "Illuminate\\Database\\QueryException::formatMessage()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php",
          "line": 679,
          "call": "Illuminate\\Database\\QueryException::__construct()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php",
          "line": 638,
          "call": "Illuminate\\Database\\Connection::runQueryCallback()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php",
          "line": 472,
          "call": "Illuminate\\Database\\Connection::run()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php",
          "line": 424,
          "call": "Illuminate\\Database\\Connection::statement()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php",
          "line": 2838,
          "call": "Illuminate\\Database\\Connection::insert()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php",
          "line": 1560,
          "call": "Illuminate\\Database\\Query\\Builder::insert()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php",
          "line": 1028,
          "call": "Illuminate\\Database\\Eloquent\\Builder::__call()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php",
          "line": 858,
          "call": "Illuminate\\Database\\Eloquent\\Model::performInsert()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Execution/Arguments/SaveModel.php",
          "line": 76,
          "call": "Illuminate\\Database\\Eloquent\\Model::save()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Execution/Arguments/ResolveNested.php",
          "line": 36,
          "call": "Nuwave\\Lighthouse\\Execution\\Arguments\\SaveModel::__invoke()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Schema/Directives/MutationExecutorDirective.php",
          "line": 89,
          "call": "Nuwave\\Lighthouse\\Execution\\Arguments\\ResolveNested::__invoke()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Support/Utils.php",
          "line": 98,
          "call": "Nuwave\\Lighthouse\\Schema\\Directives\\MutationExecutorDirective::Nuwave\\Lighthouse\\Schema\\Directives\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Schema/Directives/MutationExecutorDirective.php",
          "line": 91,
          "call": "Nuwave\\Lighthouse\\Support\\Utils::applyEach()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Schema/Directives/MutationExecutorDirective.php",
          "line": 40,
          "call": "Nuwave\\Lighthouse\\Schema\\Directives\\MutationExecutorDirective::executeMutation()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php",
          "line": 29,
          "call": "Nuwave\\Lighthouse\\Schema\\Directives\\MutationExecutorDirective::Nuwave\\Lighthouse\\Schema\\Directives\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Schema/Directives/MutationExecutorDirective.php",
          "line": 52,
          "call": "Illuminate\\Database\\Connection::transaction()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Schema/Directives/RenameArgsDirective.php",
          "line": 33,
          "call": "Nuwave\\Lighthouse\\Schema\\Directives\\MutationExecutorDirective::Nuwave\\Lighthouse\\Schema\\Directives\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Schema/Directives/SpreadDirective.php",
          "line": 34,
          "call": "Nuwave\\Lighthouse\\Schema\\Directives\\RenameArgsDirective::Nuwave\\Lighthouse\\Schema\\Directives\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Schema/Directives/ArgTraversalDirective.php",
          "line": 29,
          "call": "Nuwave\\Lighthouse\\Schema\\Directives\\SpreadDirective::Nuwave\\Lighthouse\\Schema\\Directives\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Validation/ValidateDirective.php",
          "line": 60,
          "call": "Nuwave\\Lighthouse\\Schema\\Directives\\ArgTraversalDirective::Nuwave\\Lighthouse\\Schema\\Directives\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Schema/Directives/ArgTraversalDirective.php",
          "line": 29,
          "call": "Nuwave\\Lighthouse\\Validation\\ValidateDirective::Nuwave\\Lighthouse\\Validation\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Schema/Directives/TrimDirective.php",
          "line": 56,
          "call": "Nuwave\\Lighthouse\\Schema\\Directives\\ArgTraversalDirective::Nuwave\\Lighthouse\\Schema\\Directives\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Schema/Factories/FieldFactory.php",
          "line": 92,
          "call": "Nuwave\\Lighthouse\\Schema\\Directives\\TrimDirective::Nuwave\\Lighthouse\\Schema\\Directives\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 624,
          "call": "Nuwave\\Lighthouse\\Schema\\Factories\\FieldFactory::Nuwave\\Lighthouse\\Schema\\Factories\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 550,
          "call": "GraphQL\\Executor\\ReferenceExecutor::resolveFieldValueOrError()"
        },
        {
          "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 474,
          "call": "GraphQL\\Executor\\ReferenceExecutor::resolveField()"
        },
        {
          "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 858,
          "call": "GraphQL\\Executor\\ReferenceExecutor::GraphQL\\Executor\\{closure}()"
        },
        {
          "call": "GraphQL\\Executor\\ReferenceExecutor::GraphQL\\Executor\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 860,
          "function": "array_reduce()"
        },
        {
          "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 490,
          "call": "GraphQL\\Executor\\ReferenceExecutor::promiseReduce()"
        },
        {
          "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 263,
          "call": "GraphQL\\Executor\\ReferenceExecutor::executeFieldsSerially()"
        },
        {
          "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php",
          "line": 215,
          "call": "GraphQL\\Executor\\ReferenceExecutor::executeOperation()"
        },
        {
          "file": "/var/www/html/vendor/webonyx/graphql-php/src/Executor/Executor.php",
          "line": 156,
          "call": "GraphQL\\Executor\\ReferenceExecutor::doExecute()"
        },
        {
          "file": "/var/www/html/vendor/webonyx/graphql-php/src/GraphQL.php",
          "line": 162,
          "call": "GraphQL\\Executor\\Executor::promiseToExecute()"
        },
        {
          "file": "/var/www/html/vendor/webonyx/graphql-php/src/GraphQL.php",
          "line": 94,
          "call": "GraphQL\\GraphQL::promiseToExecute()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/GraphQL.php",
          "line": 194,
          "call": "GraphQL\\GraphQL::executeQuery()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/GraphQL.php",
          "line": 145,
          "call": "Nuwave\\Lighthouse\\GraphQL::executeQuery()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/GraphQL.php",
          "line": 112,
          "call": "Nuwave\\Lighthouse\\GraphQL::executeOperation()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Support/Utils.php",
          "line": 98,
          "call": "Nuwave\\Lighthouse\\GraphQL::Nuwave\\Lighthouse\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/GraphQL.php",
          "line": 111,
          "call": "Nuwave\\Lighthouse\\Support\\Utils::applyEach()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Support/Http/Controllers/GraphQLController.php",
          "line": 32,
          "call": "Nuwave\\Lighthouse\\GraphQL::executeOperationOrOperations()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
          "line": 48,
          "call": "Nuwave\\Lighthouse\\Support\\Http\\Controllers\\GraphQLController::__invoke()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
          "line": 254,
          "call": "Illuminate\\Routing\\ControllerDispatcher::dispatch()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
          "line": 197,
          "call": "Illuminate\\Routing\\Route::runController()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
          "line": 695,
          "call": "Illuminate\\Routing\\Route::run()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 128,
          "call": "Illuminate\\Routing\\Router::Illuminate\\Routing\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Support/Http/Middleware/AttemptAuthentication.php",
          "line": 32,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Nuwave\\Lighthouse\\Support\\Http\\Middleware\\AttemptAuthentication::handle()"
        },
        {
          "file": "/var/www/html/vendor/nuwave/lighthouse/src/Support/Http/Middleware/AcceptJson.php",
          "line": 27,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Nuwave\\Lighthouse\\Support\\Http\\Middleware\\AcceptJson::handle()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 103,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
          "line": 697,
          "call": "Illuminate\\Pipeline\\Pipeline::then()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
          "line": 672,
          "call": "Illuminate\\Routing\\Router::runRouteWithinStack()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
          "line": 636,
          "call": "Illuminate\\Routing\\Router::runRoute()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
          "line": 625,
          "call": "Illuminate\\Routing\\Router::dispatchToRoute()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
          "line": 166,
          "call": "Illuminate\\Routing\\Router::dispatch()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 128,
          "call": "Illuminate\\Foundation\\Http\\Kernel::Illuminate\\Foundation\\Http\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
          "line": 21,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
          "line": 31,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest::handle()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull::handle()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
          "line": 21,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
          "line": 40,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest::handle()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings::handle()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
          "line": 27,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize::handle()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
          "line": 86,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance::handle()"
        },
        {
          "file": "/var/www/html/vendor/fruitcake/laravel-cors/src/HandleCors.php",
          "line": 52,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Fruitcake\\Cors\\HandleCors::handle()"
        },
        {
          "file": "/var/www/html/vendor/fideloper/proxy/src/TrustProxies.php",
          "line": 57,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 167,
          "call": "Fideloper\\Proxy\\TrustProxies::handle()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
          "line": 103,
          "call": "Illuminate\\Pipeline\\Pipeline::Illuminate\\Pipeline\\{closure}()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
          "line": 141,
          "call": "Illuminate\\Pipeline\\Pipeline::then()"
        },
        {
          "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
          "line": 110,
          "call": "Illuminate\\Foundation\\Http\\Kernel::sendRequestThroughRouter()"
        },
        {
          "file": "/var/www/html/public/index.php",
          "line": 52,
          "call": "Illuminate\\Foundation\\Http\\Kernel::handle()"
        },
        {
          "file": "/var/www/html/server.php",
          "line": 21,
          "function": "require_once('/var/www/html/public/index.php')"
        }
      ]
    }
  ],
  "data": null
}

版本

  • 灯塔:^5.3 (我猜,它使用的是5.8.3)
  • Laravel:^8.12 (8.40)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-24 17:57:53

我也遇到了同样的问题,这是因为“输入”被当作属性来处理,因此它将输入对象看作是一个单一的属性。

解决这个问题的方法是使用@ see指令,我看到您已经添加了这个指令。

因此,我要说的是,有些东西正在某处被缓存。schemaSticher使用一个环绕file_gets_contents的库。要重新执行file_get_contents,您可以更改文件名。

我会首先把你的突变放在schema.graphql文件中,以确保它们能工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67449773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档