如何在 DBAL 中定义自定义类型映射的长度?

How to define a length for a custom type mapping in DBAL?

我在 https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/cookbook/custom-mapping-types.html 之后定义了一个自定义映射,它可以工作,但我需要 make:entity 以与字符串相同的方式请求类型的长度。更重要的是 migrate 需要遵守长度值。

类型是 'MyEncrypted',在 MySQL 中变为 varbinary,make:entity 可以,但我不想必须 'MyEncrypted64','MyEncrypted1024', 'MyEncrypted65535' 当我觉得我应该可以只提供长度时。同样 doctrine:schema:update --force.

请求和处理长度需要做什么?

我注意到如果我有 @ORM\Column(type="MyEncrypted", length=37) '37' 确实进入了 $fieldDeclaration var 但是 migrate 拒绝确认长度变化在实体 PHP 文件中,在执行 'make:migration' 时声明没有变化。同样 doctrine:schema:update --force.

最后放弃了,只是选择了有点不尽如人意(但功能正常)的 longblob 类型,因为 Doctrine 似乎没有 variable-length varbinary 类型的概念。

在测试中,在超过 128k 记录的查询执行中,longblob 似乎比 varbinary 长 50% 左右(0.16 毫秒对 0.11 毫秒)。它仍然是 'quick enough',但与纯 SQL 实施相比不太理想。