如何在构建查询和获取数据时将Doctrine设置为自动运行iconv()?
答案 0 :(得分:1)
为什么不直接告诉您使用的RDBMS以UTF-8发送数据? Doctrine_Connection
有一个setCharset
方法:
$connection->setCharset('utf8');
答案 1 :(得分:1)
好吧,我希望没有人能够在他们的生活中面对字符集转换问题,除了UTF8之外的所有字符集很快就会成为过去。无论如何,只是为了回答我自己的问题。我解决了通过编写一个自定义水合器来扩展Record水合器并覆盖一些过滤器基类的symfony prcessValues方法,如下所示:
abstract class BaseFormFilterDoctrine extends sfFormFilterDoctrine
{
public function setup()
{
}
public function processValues($values)
{
$values = parent::processValues($values);
$charset = strtolower(str_replace('-','',$this->getTable()->getConnection()->getCharset()));
if ($charset != 'utf8')
{
foreach ($values as $key => $value)
{
if (isset($value['text']))
{
$values[$key]['text'] = iconv('utf8', $charset, $value['text']);
}
}
}
return $values;
}
}
答案 2 :(得分:0)
setCollation()
是相应的。