Проблема с типом enum в аннотациях доктрины

Я использую аннотацию сущности доктрины для генерации и обновления моей схемы, и у меня есть проблема с полем enum

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

Мой класс пользователя:

<?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 всегда есть 1 запрос для выполнения:

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

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

Спасибо

2

Решение

Чтобы обеспечить правильную поддержку enum, даже в инструментах схемы / миграции, вы должны реализовать собственный тип для каждого перечисления, как описано в Второе решение в официальной документации.

В дополнение к этому, не забудьте пометить их как комментарии:

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]