我的数据库中有一个文本字段,前10个字符有一个索引.如何在我的Doctrine Entity中指定?
我无法在任何地方找到有关索引的数据库特定选项的任何信息:/
这是我的“部分”MySQL创建语句:
KEY `sourceaddr_index` (`sourceaddr`(10)),
这是我在学说中的@Index:
@ORM\Index(name="sourceaddr_index", columns={"sourceaddr"}, options={}),
这个dosnt会干扰常规使用,但是在将开发部署到新笔记本电脑并根据我的实体创建数据库时,我注意到了这个问题……
任何帮助,将不胜感激 :)
解决方法:
在MySQL中手动创建索引之后,我已经非常幸运地在Doctrine中命名索引.它不漂亮或优雅,如果您忘记重新创建索引,它很容易导致错误从开发转移到生产.但是,Doctrine似乎理解它尊重它.
在我的实体中,我有以下定义.学说忽略了长度选项 – 这是我的一厢情愿.
/**
* Field
*
* @ORM\Table(name="field", indexes={
* @ORM\Index(name="field_value_bt", columns={"value"}, options={"length": 100})
* })
在MySQL中,我执行
CREATE INDEX field_value_bt ON field (value(100))
据我所知,只要名称相同,Doctrine就会单独留下索引.
标签:doctrine-orm,mysql,symfony
来源: https://codeday.me/bug/20190823/1694840.html