微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。