在 GraphQL returns null/wrong 数据中使用自定义标识符时的 OneToMany 关系
OneToMany relation when using custom identifier in GraphQL returns null/wrong data
我正在使用 api-platform 和 Symfony 5 来构建 GraphQl API。
当使用 custom identifier 不是主键时,OneToMany 结果集 returns 为空或错误数据。这个问题是因为从 OneToMany table 获取数据时,使用了自定义标识符值而不是主键。
例子
Table 博客有一个自定义标识符 slug 和主键 id。此 table 与 Table Image
具有 OneToMany 关系
这些是在获取数据时进行的查询:
SELECT b0_.id AS id_0, b0_.content AS content_1, b0_.slug AS slug_3 FROM blog b0_ WHERE b0_.slug = "highest peak"
SELECT i0_.id AS id_0, i0_.src AS src_1 FROM image i0_ WHERE i0_.blog_id = "highest peak" ORDER BY i0_.id ASC LIMIT 30
从图像中获取时,应在参数中发送博客 ID,但使用了 slug。
但是,在 REST 中一切正常。使用 GraphQL 时遇到问题。
从 2.5.6 降级到 2.5.4 解决了这个问题。
可能的问题
src/Bridge/Doctrine/Orm/SubresourceDataProvider.php 已在版本 2.5.5
上更新
我正在使用 api-platform 和 Symfony 5 来构建 GraphQl API。
当使用 custom identifier 不是主键时,OneToMany 结果集 returns 为空或错误数据。这个问题是因为从 OneToMany table 获取数据时,使用了自定义标识符值而不是主键。
例子
Table 博客有一个自定义标识符 slug 和主键 id。此 table 与 Table Image
具有 OneToMany 关系这些是在获取数据时进行的查询:
SELECT b0_.id AS id_0, b0_.content AS content_1, b0_.slug AS slug_3 FROM blog b0_ WHERE b0_.slug = "highest peak"
SELECT i0_.id AS id_0, i0_.src AS src_1 FROM image i0_ WHERE i0_.blog_id = "highest peak" ORDER BY i0_.id ASC LIMIT 30
从图像中获取时,应在参数中发送博客 ID,但使用了 slug。
但是,在 REST 中一切正常。使用 GraphQL 时遇到问题。
从 2.5.6 降级到 2.5.4 解决了这个问题。
可能的问题
src/Bridge/Doctrine/Orm/SubresourceDataProvider.php 已在版本 2.5.5
上更新