2015-01-15 3 views
2

я использую аннотацию доктрины субъекта, чтобы создавать и обновлять свою схему и у меня есть проблемы с полем перечисленийПроблемы с перечислимым типом аннотаций доктрины в

Вот моя сущность

Моим класс Пользователя:

<?php 

namespace Schematify\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="users") 
*/ 
class User 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    * @var int 
    */ 
    protected $id; 

    /** @ORM\Column(length=250) */ 
    protected $email = ''; 

    /** @ORM\Column(length=32,options={"default":""}) */ 
    protected $pasword = ''; 

    /** @ORM\Column(type="string", columnDefinition="ENUM('visible', 'invisible')") */ 
    protected $status = ''; 


} 

Я разработал команду cli с именем console.php, чтобы вызвать все обновления для схемы. Когда я типа php console.php orm:schema-tool:update --force всегда есть один запрос для выполнения:

ALTER TABLE users CHANGE status status ENUM('visible', 'invisible'); 

Я использую базу данных MySQL и весь мой код доступен здесь: https://github.com/talkspiritlab/schematify

Благодарности

+0

У меня аналогичная проблема с ENUM на схеме: обновление. Вы разрешили это? – WellBloud

ответ

0

Чтобы иметь надлежащую поддержку для перечисления, даже в инструментах схемы/миграции вы должны реализовать пользовательский тип для каждого перечисления, как описано в second solution in the official documentation.

В дополнение к этому, не забудьте mark them as needing comments:

Type::addType($name, $class); 
$platform->registerDoctrineTypeMapping($name, $name); 
$platform->markDoctrineTypeCommented($name); 

Если при использовании очень новой версии DBAL, которые включают this commit, то вам не нужно пометить как нуждаясь комментарий. На момент написания это было бы мастером (или гипотетическим будущим v2.6).

Смежные вопросы