教义自定义映射类型架构更新
Posted
技术标签:
【中文标题】教义自定义映射类型架构更新【英文标题】:Doctrine custom mapping type schema update 【发布时间】:2016-02-25 21:15:38 【问题描述】:我正在尝试创建自定义 Doctrine 映射类型,如下所示: http://doctrine-orm.readthedocs.org/projects/doctrine-dbal/en/latest/reference/types.html#custom-mapping-types
我的班级如下:
<?php
namespace AppBundle\Doctrine\Type;
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Platforms\AbstractPlatform;
/**
* My custom datatype.
*/
class BinaryStringType extends Type
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
return $platform->getBinaryTypeDeclarationSQL($fieldDeclaration);
public function getDefaultLength(AbstractPlatform $platform)
return $platform->getVarcharDefaultLength();
public function getName()
return 'binarystring';
?>
在 config.yml doctrine
部分:
dbal:
types:
binarystring: AppBundle\Doctrine\Type\BinaryStringType
它(有点)有效,但是:运行 php bin/console doctrine:schema:update
总是会生成一个 ALTER TABLE 语句,无论数据库是否是最新的。
ALTER TABLE xxxx CHANGE column column VARBINARY(24) DEFAULT NULL;
任何想法如何解决这个问题?
谢谢!
【问题讨论】:
生成ALTER TABLE
语句是什么意思,它生成的确切语句是什么?
@JasonRoman 在问题中添加了alter table
语句。
【参考方案1】:
您的问题是,学说将您的字段重新识别为常规字符串类型而不是二进制字符串,因此它每次都尝试对其进行转换。
如果你添加..
/**
* @inheritdoc
*/
public function requiresSQLCommentHint(AbstractPlatform $platform)
return true;
.. 到您的班级,然后它会在您的迁移中添加类似 COMMENT \'(DC2Type:binarystring)\'
的内容到 alter table 调用(以及对您的数据库的注释提示),以便将来将其识别为您的字段类型。
【讨论】:
以上是关于教义自定义映射类型架构更新的主要内容,如果未能解决你的问题,请参考以下文章