试图找到一种方法来以编程方式创建具有特定排序规则的表,但似乎无法找到正确执行此操作的方法。我正在使用 "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
工具时,它使用 LATIN1 字符集和 latin1_swedish_ci 作为默认排序规则创建数据库。
然后我运行迁移,所有表都是 utf8_general_ci
查看了 $schema->createTable()
函数,但找不到将我需要的排序规则传递给它的方法。这里的正确解决方法是什么?
最佳答案
您可以设置 default_table_options 连接选项来实现此目的: 在 symfony 中,这是通过以下方式完成的:
doctrine:
dbal:
default_table_options:
charset: latin1
collate: latin1_general_ci
对于那些希望在简单的 Doctrine 中做到这一点的人来说,这转化为 Doctrine 连接选项 defaultDatabaseOptions,并与您的数据库凭据等一起传递给实体管理器:
[
...
'driver' => ...
'user' => ...
...
'defaultTableOptions' => [
'charset' => 'latin1',
'collate' => 'latin1_general_ci'
]
]
关于php - Doctrine 迁移表整理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30185603/