无法将 PHP 值 X 转换为 uuid 类型。需要以下类型之一:字符串。但是 X 实现了 \Stringable

问题描述 投票:0回答:1

当我调用 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 接口

php symfony doctrine-orm doctrine dbal
1个回答
0
投票

Doctrine ORM 声明了严格的类型,因此在这种情况下它不会自动转换为字符串。

根据该错误,您可能正在使用

uuid
类型进行此映射。

如果您想声明一个不从 AbstractUid 扩展的自定义 ID 类,您还必须定义一个自定义 DBAL 类型,并教 Doctrine 如何将该对象转换为字符串,反之亦然。

请参阅此处如何操作:

© www.soinside.com 2019 - 2024. All rights reserved.