关于学说的注释的枚举类型问题

时间:2015-01-15 14:48:47

标签: php mysql doctrine-orm annotations

我使用doctrine entity的注释来生成和更新我的架构,我对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 = '';


}

我开发了一个名为console.php的cli命令,以便调用所有架构工具更新。当我输入php console.php orm:schema-tool:update --force时,总会有1个查询要执行:

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

我使用的是mysql数据库,我的所有代码都可以在这里找到:https://github.com/talkspiritlab/schematify

由于

1 个答案:

答案 0 :(得分:0)

要获得对枚举的适当支持,即使在架构/迁移工具中,也应为每个枚举实现自定义类型,如second solution in the official documentation中所述。

除此之外,不要忘记mark them as needing comments

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

除非您使用的是包含this commit的新版DBAL,否则您无需标记为需要评论。在撰写本文时,这将是主人(或假设的未来v2.6)。