2010-07-30 37 views
1

如何設置Doctrine在構建查詢和獲取數據時自動運行iconv()?Doctrine查詢的自動iconv

+0

您正在使用的學說的版本? 2.x還是1.x? – Crozin 2010-12-22 21:06:25

+0

doctrine ver 1.2 – Dziamid 2010-12-22 21:20:45

回答

1

那麼,我希望在他們的生活中沒有人需要面對字符集轉換問題,除了UTF8以外,所有的字符集都將很快成爲過去。無論如何,只是爲了給我自己的問題提供一些反饋。我寫一個擴展記錄水化定製的水化和通過覆蓋過濾器的基類這樣一些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; 
    } 
} 
1

爲什麼不直接告訴你正在用UTF-8發送數據的RDBMS呢? Doctrine_Connection具有setCharset方法爲這樣:

$connection->setCharset('utf8'); 
+0

例如,Mysql很好。這樣做,Doctrine會添加一個SET NAMES查詢。但是一些RDBMS不支持SET NAMES(例如MSSQL)。那麼,再一次,什麼是在兩個方向上處理查詢數據的最好的\最簡單的方法。 – Dziamid 2010-12-22 20:54:16

0

setCollation()是相應的一個。