Symfony API Platform接口仅返回title,如何返回自动生成ID?
解决API Platform GET接口不返回ID字段的问题
嘿,我一眼就瞅出问题所在了!你的School实体里id字段的@Groups注解写法错了,导致序列化时没把ID纳入school.read分组里,所以GET接口才只返回了title。
问题根源
你当前给id字段的Groups注解是这样的:
@Groups({"school.read, school.write"})
这里你把两个分组名塞进了同一个字符串里,API Platform会把它当成一个单独的分组名称(也就是school.read, school.write这个整体),而不是把id同时加入school.read和school.write两个分组。你的GET接口用的是school.read分组,自然不会返回ID字段。
修复方案
把id字段的@Groups注解改成正确格式,每个分组作为数组的独立元素:
/** * @var string the id of this School * * @ORM\Id * @ORM\Column(type="guid", unique=true) * @ORM\GeneratedValue(strategy="CUSTOM") * @ORM\CustomIdGenerator(class="Ramsey\Uuid\Doctrine\UuidGenerator") * @Groups({"school.read", "school.write"}) */ private $id;
验证效果
修正后,你的GET接口返回结果就会同时包含id和title字段了,效果如下:
[ { "id": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv", "title": "Test" }, { "id": "wxyz1234-5678-90ab-cdef-ghijklmnopqr", "title": "Test2" } ]
顺带提一句,你的ApiResource和其他配置都是没问题的,只要修正这个Groups注解就能搞定啦。
内容的提问来源于stack exchange,提问作者mevr
相关产品推荐
相关产品推荐

