Doctrine 自定义映射类型的默认值返回空字符串

问题描述

我在我的项目中向 Doctrine 添加了 MySQL tinyint 类型。
但是在生成迁移时,我注意到默认值写为 DEFAULT ''

从我的实体注释中,我将默认值声明为 false

/**
 * @ORM\Column(type="tinyint",options={"default"=false,"unsigned"=true})
 */

但由于某种原因,它被转换为空字符串。
同时,如果我将其设置为 0,则迁移然后生成 DEFAULT '0'

是什么阻止了 Doctrine 将布尔值转换为整数?
我的自定义类型类是否缺少实现此目的的东西?

class TinyintType extends Type {
    const TINYINT='tinyint';

    public function getName(): string {
        return self::TINYINT;
    }

    public function getSQLDeclaration(array $column,AbstractPlatform $platform): string {
        $declaration="TINYINT(1)";

        if(array_key_exists('unsigned',$column) && $column['unsigned'] === true) {
            $declaration.=" UNSIGNED";
        }

        $declaration.=" COMMENT '(DC2Type:tinyint)'";

        return $declaration;
    }

    public function canRequireSQLConversion(): bool {
        return false;
    }

    public function convertToPHPValue($value,AbstractPlatform $platform): ?int {
        return $value === null ? null : (int)$value;
    }

    public function convertToDatabaseValue($value,AbstractPlatform $platform): ?int {
        return $value === null ? null : (int)$value;
    }

    public function getBindingType(): int {
        return ParameterType::INTEGER;
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...