我使用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
由于
答案 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)。