我使用的是 api平台 使用Symfony 5构建GraphQl API。
当使用 自定义标识符 不是主键,OneToMany结果集就会返回空或错误的数据。造成这个问题的原因是当从OneToMany表中获取数据时,使用了自定义标识符值而不是主键。
例子
表Blog有一个自定义标识符slug和主键id。此表与表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
当从图片中获取数据时,Blog ID应该在参数中发送,但使用了slug。
然而,在REST中一切都很好。在使用GraphQL时遇到了问题。
从2.5.6降级到2.5.4后,问题得到解决。
可能的问题
srcBridgeDoctrineOrmSubresourceDataProvider.php在2.5.5版本上进行了更新。