试图找到一种以编程方式创建具有特定排序规则的表格的方法,但似乎无法找到如何正确完成的方法.我正在使用“doctrine / doctrine-migrations-bundle”:“2.1.*@dev”和Symfony 2.3,
我在config.yml中设置:
# Doctrine Configuration
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: LATIN1
orm:
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
auto_mapping: true
doctrine_migrations:
dir_name: %kernel.root_dir%/../src/CF/EscritorioBundle/Migrations
namespace: MyNameSpace\Migrations
table_name: migrations
name: Application Migrations
当我运行doctrine:database:create tool时,它使用LATIN1 charset和latin1_swedish_ci作为默认排序规则创建数据库.
然后我运行我的迁移,所有表都是utf8_general_ci
查看$schema-> createTable()函数,但无法找到传递我需要的排序规则的方法.这里适当的解决方法是什么?
解决方法:
嗯,这有点难看,但我找到的唯一方法是在所有表之后生成另一组迁移,这些迁移改变了表并转换了编码.迁移up()和down()函数看起来像:
......
/**
* @param Schema $schema
*/
public function up(Schema $schema)
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql("ALTER TABLE MyTable CONVERT TO CHARACTER SET LATIN1 COLLATE latin1_general_ci");
}
/**
* @param Schema $schema
*/
public function down(Schema $schema)
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql("ALTER TABLE MyTable CONVERT TO CHARACTER SET UTF8 COLLATE utf8_general_ci");
}
标签:doctrine-orm,php,symfony,doctrine
来源: https://codeday.me/bug/20190824/1710291.html