我有例如:
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
是如何生成的?
我想手动添加更多内容,并且我想保持相同的策略。
这是随机的还是参数化的?
例如,看看这个文件的方法
addIndex()
。这个负责生成您的 IDX_1DD399507E3C61F9
索引。
$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));
}