Мне удалось решить проблему.Вам необходимо переопределить класс DataDict, используемый для адаптера соединения (в нашем случае, Doctrine_DataDict_Mysql )
Я зарегистрировал пользовательский класс соединения с
$manager = Doctrine_Manager::getInstance();
$manager->registerConnectionDriver('mysql', 'My_Doctrine_Connection_Mysql');
In My_Doctrine_Connection_Mysql :
class My_Doctrine_Connection_Mysql extends Doctrine_Connection_Mysql
{
/**
* Data Dict(ator|ionary)?
* @var My_Doctrine_DataDict_Mysql
*/
protected $_dataDict;
/**
* __get Overloading method
* @param string $name
* @return mixed
*/
public function __get($name)
{
if ('dataDict' === $name) {
if (null === $this->_dataDict) {
$this->_dataDict = new My_Doctrine_DataDict_Mysql($this);
}
return $this->_dataDict;
}
return parent::__get($name);
}
}
И в My_Doctrine_DataDict_Mysql :
class My_Doctrine_DataDict_Mysql extends Doctrine_DataDict_Mysql
{
/**
* @see parent::getPortableDecleration
* @param array $field
* @return array
*/
public function getPortableDeclaration(array $field)
{
$definition = parent::getPortableDeclaration($field);
// Normalising field type. Pulled almost exactly from parent
$length = null;
$dbType = strtolower($field['type']);
$dbType = strtok($dbType, '(), ');
if ($dbType == 'national') {
$dbType = strtok('(), ');
}
if (isset($field['length'])) {
$length = $field['length'];
} else {
$length = strtok('(), ');
$decimal = strtok('(), ');
}
// Set definition
switch ($dbType) {
case 'set':
$definition['type'] = array('set');
break;
}
return $definition;
}
}