Symfony 4 如何在迁移中生成键名?

问题描述 投票:0回答:1

我有例如:

CREATE TABLE news
(...)
INDEX IDX_1DD399507E3C61F9 (owner_id)

并且:

ALTER TABLE news 
(...)
ADD CONSTRAINT FK_1DD399507E3C61F9 FOREIGN KEY (owner_id) REFERENCES user (id)

我的意思是,名称:

IDX_1DD399507E3C61F9
FK_1DD399507E3C61F9
是如何生成的?

我想手动添加更多内容,并且我想保持相同的策略。

这是随机的还是参数化的?

php symfony doctrine
1个回答
0
投票

例如,看看这个文件的方法

addIndex()
。这个负责生成您的
IDX_1DD399507E3C61F9
索引。

github 存储库上查看更多源代码

$indexName = $this->_generateIdentifierName(
    array_merge([$this->getName()], $columnNames),
    'idx',
    $this->_getMaxIdentifierLength()
);

此代码片段调用父类

_generateIdentifierName()
AbstractAsset
方法,您也可以继承该方法。

protected function _generateIdentifierName($columnNames, $prefix = '', $maxSize = 30)
{
    $hash = implode('', array_map(static function ($column) {
        return dechex(crc32($column));
    }, $columnNames));

    return strtoupper(substr($prefix . '_' . $hash, 0, $maxSize));
}
© www.soinside.com 2019 - 2024. All rights reserved.