原则2从实体元数据生成SQL,在SQLServer上对属性nullable=false不显式NULL


Doctrine 2 Generates SQL from Entity Metas not explicit NULL on attributes nullable=false on SQLServer

我正在从实体元创建我的db脚本,使用$sqlSchema = $this->tool->createSchema($this->metas);和此方法正确执行SQL,但由于某种原因,属性设置为nullable=false,它没有显式设置NULL。

Generate from Doctrine:

CREATE TABLE my_table (
id INT IDENTITY NOT NULL,
name INT NOT NULL,
other_column INT,
other_column2 NVARCHAR(2500),
);

我需要什么:

CREATE TABLE my_table (
id INT IDENTITY NOT NULL,
name INT NOT NULL,
other_column INT NULL,
other_column2 NVARCHAR(2500) NULL,
);

这个脚本当我执行from doctrine时,所有不具有NULL的列显式地放置NOT NULL。如果我从客户端工具执行它的工作很好。如果我改变连接类型为MySQL,它执行良好,设置NULL和NOT NULL正确。

我使用的是Doctrine 2.3.4和SQLServer 2012。

谢谢。

这里的问题可能与实体定义中缺少的信息有关。

您应该尝试在实体注释或yml中定义一个默认值(在您的情况下为null),这取决于您的定义风格。此外,您应该通过nullable=true语句将您的字段标记为可空的。

注释的例子:

@ORM'Column(name="baz", [...], nullable=true, options={"default":null})

yml例子:

Entity'Entity_name:
    type: entity
    table: table_name
    fields: 
        field_name:
            type: string
            nullable: true
            options:
                default: null

希望它有帮助,问候。