我想创建两个相关的实体。如何使用所需的子实体创建第一个实体。我尝试了以下代码,但 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
有只小跳蛙
email
TA贡献1824条经验 获得超8个赞
mutation CreateUser{
createUser(input: {
email: "user@test.com",
username: "user@test.com",
role: "ROLE_USER",
password: "bonjour",
enabled: true,
}) {
user{
id
username
role
reference
enabled
created
updated
}
}
}
- 2 回答
- 0 关注
- 192 浏览
添加回答
举报
0/150
提交
取消