为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 apiplatform/graphql 上创建/变异具有子关系的实体

如何在 apiplatform/graphql 上创建/变异具有子关系的实体

PHP
米脂 2021-11-26 15:14:02
我想创建两个相关的实体。如何使用所需的子实体创建第一个实体。我尝试了以下代码,但 graphql 返回以下错误:{  "errors": [    {      "message": "Variable \"$stock\" of type \"createProductInput!\" used in position expecting type \"String\".",      "extensions": {        "category": "graphql"      },      "locations": [        {          "line": 7,          "column": 3        },        {          "line": 15,          "column": 17        }      ]    }  ]}突变:mutation createProduct ($input: createProductInput!) {  createProduct(input: $input) {    clientMutationId    product {      uuid      name      sku    }  }}变量:{  "input": {    "name": "ProductAAA",    "sku": "product_aaa",    "stock": {      "quantity": 33,      "unit": "s"    }  }}奇怪的是 createProductInput 说 stock 是一个字符串而不是一个对象。uuid: String!name: String!sku: String!stock: StringclientMutationId: String这些是我的实体:// Product.phpuse ApiPlatform\Core\Annotation\ApiFilter;use ApiPlatform\Core\Annotation\ApiProperty;use ApiPlatform\Core\Annotation\ApiResource;use ApiPlatform\Core\Annotation\ApiSubresource;use Doctrine\ORM\Mapping as ORM;/** * @ApiResource * @ApiFilter(ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter::class, properties={"name": "partial", "sku": "partial"}) * * @ORM\Table(name="products") */class Product{    /**     * @ORM\Id     * @ORM\Column(name="product_id", type="uuid", unique=true)     * @ORM\GeneratedValue(strategy="CUSTOM")     * @ORM\CustomIdGenerator(class="Ramsey\Uuid\Doctrine\UuidGenerator")     *     * @ApiProperty(identifier=true)     */    private $id;    /**     * @ORM\Column(type="string")     */    private $name;    /**     * @ORM\Column(type="string")     */    private $sku;    /**     * @ORM\ManyToOne(targetEntity="Stock", cascade={"PERSIST"})     * @ORM\JoinColumn(name="stock_id", referencedColumnName="stock_id")     *     * @ApiSubresource     */    private $stock;}
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

您不能在突变中创建嵌套实体,您需要先创建嵌套实体,然后在突变中使用其 IRI。这就是类型为String的原因。

以前是可能的,但已被删除,因为它导致了一些问题。见:https : //github.com/api-platform/core/pull/1886


查看完整回答
反对 回复 2021-11-26
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

mutation CreateUser{

  createUser(input: {

    email: "user@test.com", 

    username: "user@test.com", 

    role: "ROLE_USER",

    password: "bonjour",

    enabled: true,

  }) {

    user{

        id

      email

      username

      role

      reference

      enabled

      created

      updated

    }

  }

}


查看完整回答
反对 回复 2021-11-26
  • 2 回答
  • 0 关注
  • 192 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信