在Doctrine XML模式文件中,“fixed”选项的语法是什么?

时间:2013-12-29 23:43:07

标签: doctrine-orm

这与关于how to switch a type from 'varchar' to 'char'的另一个问题非常相似。但是,我无法让我的XML配置工作。

app/console doctrine:schema:update --dump-sql所说的其中一个字段与我的数据库不同的是:

ALTER TABLE user CHANGE password password VARCHAR(32) NOT NULL;

我很确定那是因为我对该字段的数据库定义已正确设置为char(32),但是Doctrine并不期望该字段被修复。

为了让Doctrine知道它已经修复,我添加了以下XML:

<field name="password" type="string" column="password" length="32" nullable="false">
    <options>
        <option name="fixed" value="true" />
    </options>
</field>

这不正确吗?

一些奖励信息,如果重要:我正在使用MySQL。

2 个答案:

答案 0 :(得分:0)

我偶然发现了一个合理的答案,但这绝对是一个黑客攻击。

<field name="password" type="string" column="password" length="32" nullable="false" column-definition="CHAR(32) NOT NULL" />

lengthnullable在这里实际上被忽略了,但我想我会把它们留在我想要的冗长的地方。 column-definition实际上是强制固定长度CHAR的原因。

不幸的是,在执行架构差异时似乎没有考虑到这个属性,因此它总是说该字段存在差异。

答案 1 :(得分:0)

偶然发现你的帖子。

原始帖子中的语法不正确。我想留下我的评论,以防其他人碰巧找到这个帖子。虽然接受的答案有效,但Doctrine模式中的“固定选项”也有效。

使用上面的代码snipet,它应该如下所示:

<field name="password" type="string" column="password" length="32" nullable="false">
    <options>
        <option name="fixed">true</option>
    </options>
</field>

属性值无效。

希望这有助于冒险在这个线程上冒险!