当我调用 Doctrine 的刷新函数来保存 X 实体时,出现转换错误。
Could not convert PHP value of type X to type uuid. Expected one of the following types: null, string, Symfony\\Component\\Uid\\AbstractUid
final class X extends MyUuid
{
}
abstract class MyUuid implements \Stringable
{
// receive string uuid
final public function __construct(protected string $value)
{
}
public function __toString(): string // return uuid string
{
return $this->value;
}
}
我不明白为什么它说它接受字符串,但我的类实现了 \Stringable 接口
Doctrine ORM 声明了严格的类型,因此在这种情况下它不会自动转换为字符串。
根据该错误,您可能正在使用
uuid
类型进行此映射。
如果您想声明一个不从 AbstractUid 扩展的自定义 ID 类,您还必须定义一个自定义 DBAL 类型,并教 Doctrine 如何将该对象转换为字符串,反之亦然。
请参阅此处如何操作: