2010-07-30 2 views
1

쿼리를 작성하고 데이터를 가져올 때 iconv()를 자동으로 실행하도록 Doctrine을 설정하려면 어떻게해야합니까?Doctrine 쿼리의 자동 iconv

+0

사용하고있는 교리의 버전? 2.x 또는 1.x? – Crozin

+0

doctrine ver 1.2 – Dziamid

답변

1

글쎄, 아무도 자신의 삶에서 문자 세트 변환 문제에 직면 해선 안되고, UTF8을 제외한 모든 문자 집합은 곧 과거의 일이 될 것입니다. 어쨌든, 그냥 내 자신의 질문에 약간의 피드백을 제공합니다. 나는 기록 하이드 레이터를 확장하는 사용자 정의 하이드 레이터를 작성하여이 같은 필터 기본 클래스의 일부 심포니 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_ConnectionsetCharset하는 방법이있다 :

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

예를 들어 Mysql에서는 문제가 없습니다. 그러면 doctrine은 SET NAMES 쿼리를 추가합니다. 그러나 일부 RDBMS는 SET NAMES (예 : MSSQL)를 지원하지 않습니다. 다시 한번, 양방향으로 쿼리 데이터를 처리하는 가장 쉬운 방법은 무엇입니까? – Dziamid

0

setCollation()가 대응된다.

관련 문제