Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

zf2 doctrine2 how to use tinyint datatype in entity column

I am using Doctrine 2 ORM with ZF2.

/**
 * 
 * @ORM\Column(type="tinyint", options={"default" = 1})
 */
protected $isActive;

How can I create tinyint type of column, as I can see in support data type of doctrine, it does not exist.

Commandline># ./vendor/bin/doctrine-module orm:validate-schema

[Mapping]  FAIL - The entity-class 'Application\Entity\User' mapping is invalid:
* The field 'Application\Entity\User#isActive' uses a non-existant type 'tinyint'.

  [Doctrine\DBAL\DBALException]
  Unknown column type "tinyint" requested. Any Doctrine type that you use has to be registered with \Doctrine\DBAL\Types\Type::addType(). You can get a list of all the known types with \Doctrine\DBAL\Types\Type::getTypeMap(). If this
  error occurs during database introspection then you might have forgot to register all database types for a Doctrine Type. Use AbstractPlatform#registerDoctrineTypeMapping() or have your custom types implement Type#getMappedDatabaseT
  ypes(). If the type name is empty you might have a problem with the cache or forgot some mapping information.


orm:validate-schema
like image 975
Developer Avatar asked Sep 11 '13 16:09

Developer


1 Answers

Use columnDefinition, though it is not an ideal solution but serve the purpose.

/**
 * 
 * @ORM\Column(columnDefinition="TINYINT DEFAULT 1 NOT NULL")
 */
protected $isActive;

columnDefinition: DDL SQL snippet that starts after the column name and specifies the complete (non-portable!) column definition. This attribute allows to make use of advanced RMDBS features. However you should make careful use of this feature and the consequences. SchemaTool will not detect changes on the column correctly anymore if you use “columnDefinition”.

Additionally you should remember that the “type” attribute still handles the conversion between PHP and Database values. If you use this attribute on a column that is used for joins between tables you should also take a look at @JoinColumn.

like image 152
Developer Avatar answered Sep 20 '22 15:09

Developer