A MySQL “tinyint” field, regardless of length, is mapped as a boolean in Symfony’s MySQL DBAL platform.  Good to know, so when you start typing in those Doctrine ORM mapping files in annotation or my preferred way, YML files, you won’t get a fatal error because you didn’t define the field properly.

Here’s a list of the other main MySQL field types and how they are defined in Doctrine ORM mapping files.  It can get a little confusing, like “timestamp” is also “datetime” even though “datetime” is “datetime”.  It is what it is.  Once you realize you’re just making translations for one system to talk to another, it gets easier!

This list is helpful because when you start converting your database table fields, you will need a reference, or better yet, look into “Skipper ORM” and it will take care of mappings and creating entities out of your database tables automatically for you!

protected function initializeDoctrineTypeMappings()
{
$this->doctrineTypeMapping = array(
'tinyint' => 'boolean',
'smallint' => 'smallint',
'mediumint' => 'integer',
'int' => 'integer',
'integer' => 'integer',
'bigint' => 'bigint',
'tinytext' => 'text',
'mediumtext' => 'text',
'longtext' => 'text',
'text' => 'text',
'varchar' => 'string',
'string' => 'string',
'char' => 'string',
'date' => 'date',
'datetime' => 'datetime',
'timestamp' => 'datetime',
'time' => 'time',
'float' => 'float',
'double' => 'float',
'real' => 'float',
'decimal' => 'decimal',
'numeric' => 'decimal',
'year' => 'date',
'longblob' => 'blob',
'blob' => 'blob',
'mediumblob' => 'blob',
'tinyblob' => 'blob',
'binary' => 'blob',
'varbinary' => 'blob',
'set' => 'simple_array',
);
}