Dor*_*ron 19 doctrine zend-framework character-encoding doctrine-orm
以下ZendCasts演员表示了一种在zend框架环境中使用doctrine 2的方法.
使用此配置,如何使连接使用utf-8字符集,以便"SET NAMES 'utf8'"
发生魔力?
我真正想要的是使用application.ini文件配置它的方法.
如果使用此配置无法实现,那么如何通过代码完成?_initDoctrine
Bootstratp文件中的方法?
谢谢.
更新
看来有一个post connect事件处理这个,但我不知道如何通过application.ini设置它(如果可能的话).
如果没有,我可以通过bootstrap方法进行设置吗?在依赖Bisna库时,引导方法是否会在任何其他学说连接代码运行之前运行?
ven*_*mus 92
如果您不使用Bisna,您可以执行以下操作:
将配置文件直接传递给EntityManager的连接选项(尽管driverOptions
没有记录)
// $options is a simple array to hold your data
$connectionOptions = array(
'driver' => $options['conn']['driv'],
'user' => $options['conn']['user'],
'password' => $options['conn']['pass'],
'dbname' => $options['conn']['dbname'],
'host' => $options['conn']['host'],
'charset' => 'utf8',
'driverOptions' => array(
1002 => 'SET NAMES utf8'
)
);
$em = \Doctrine\ORM\EntityManager::create($connectionOptions, $config);
Run Code Online (Sandbox Code Playgroud)
我正在使用以下自定义引导资源来初始化doctrine,因此$options
在application.ini中可以访问$this->getOptions()
;
// \library\My\Application\Resource\Doctrine.php
class My_Application_Resource_Doctrine extends Zend_Application_Resource_ResourceAbstract
{
public function init()
{
$options = $this->getOptions();
$config = new \Doctrine\ORM\Configuration();
//doctrine autoloader, config and other initializations
...
$connectionOptions = array(
.... //see above
);
$em = \Doctrine\ORM\EntityManager::create($connectionOptions, $config);
$registry = Zend_Registry::getInstance();
$registry->em = $em;
return $em;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您输入application.ini,它将自动引导
resources.doctrine.conn.host = '127.0.0.1'
resources.doctrine.conn.user = '...'
resources.doctrine.conn.pass = '...'
....
Run Code Online (Sandbox Code Playgroud)
SMk*_*Mka 22
对我来说很好
resources.doctrine.dbal.connections.default.parameters.driverOptions.1002 = "SET NAMES 'UTF8'"
Run Code Online (Sandbox Code Playgroud)
1002
是整数值PDO::MYSQL_ATTR_INIT_COMMAND
:
连接MySQL服务器时执行的命令.重新连接时会自动重新执行.注意,在构造新的数据库句柄时,此常量只能在driver_options数组中使用.
Ale*_*lex 12
这对我有用. config/autoload/doctrine.local.php
<?php
return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => 'localhost',
'port' => '3306',
'user' => '...',
'password' => '...',
'dbname' => '...',
'driverOptions' => array(
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
)
),
)
)
)
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
35352 次 |
最近记录: |