API Platform中Doctrine ManyToOne注解cascade参数类型错误求解
问题排查结果
你收到的报错是因为Doctrine的ManyToOne注解要求cascade参数必须为数组或null,但你传入了字符串类型的值,直接触发了参数类型校验失败。
具体需要修改的代码
1. 修复Post实体category属性的关联注解(当前报错的核心原因)
你当前的代码写法为:
/** * @ORM\ManyToOne(targetEntity=Category::class, inversedBy="posts", cascade="persiste") */
存在两处错误:
cascade参数值必须用数组包裹,不能直接传入字符串- 级联操作名拼写错误,正确拼写为
persist,你多写了一个尾字母e
修改后应为:
/** * @ORM\ManyToOne(targetEntity=Category::class, inversedBy="posts", cascade={"persist"}) */
2. 修复Category实体的Groups注解格式(避免后续触发新的参数类型错误)
PHP注解/属性的Groups要求入参必须为数组格式,你当前两处写法都不符合规范:
原有错误写法:
#[Groups('read:Post')] private $id; #[Groups('read:Post','write:Post')] private $name;
修改后应为:
#[Groups(['read:Post'])] private $id; #[Groups(['read:Post','write:Post'])] private $name;
可选优化项(不影响当前报错,仅为代码规范)
Post实体中更新时间字段拼写错误,uptdatedAt多写了一个字母t,建议统一修改为updatedAt,避免后续业务调用时出现属性不存在的问题。
内容的提问来源于stack exchange,提问作者Chlem
相关产品推荐
相关产品推荐

