【问题标题】:Doctrine2 Integer type with specified lengthDoctrine2 指定长度的整数类型
【发布时间】:2015-03-02 16:13:46
【问题描述】:

我正在使用 Doctrine 2 制作一个 symfony2 项目,并且我正在使用 Annotations 将我的实体映射到 MySQL 数据库。
我已经阅读了学说 2 文档,它说长度属性仅适用于字符串类型。

所以我的问题是,有没有办法通过注释(columnDefinition 除外)设置整数列的特定长度(所以没有 smallint、bigint 等等……),如果没有……为什么没有没有吗?在 Doctrine 1 中,我可以为整数类型指定特定的长度

【问题讨论】:

    标签: mysql symfony doctrine-orm annotations


    【解决方案1】:

    因为 Doctrine 是为使用自身来操作数据而创建的。并且不关心这些数据将如何被其他程序显示。但是数值的长度定义只是为了方便在 DB-managers 中显示数据而存在(主要用于 cli mysql 客户端)。

    在 Doctrine 中,出于同样的原因,您也不能创建触发器。您可以使用教义来实现此类触发器。

    【讨论】:

    • 不是数据展示,而是数据库设计。上次我检查设置字段长度时,您知道它们将仅存储具有一定长度的最大数据有助于优化,我真的不需要 11 位字段来存储我每天工作的小时数工作。您可以在 Doctrine 1 中指定字段长度
    • 你需要阅读更多关于 MySQL 中的类型。 INTEGER 类型始终以 4 个字节的形式保存在数据库中。如果您需要的更少,您可以使用 TINYINT(1 个字节)、SMALLINT(2 个字节)、MEDIUMINT(3 个字节)。当您在 MYSQL 中使用括号中的参数定义 INTEGER 字段时,仅表示该整数值将显示在您指定大小的列中(其余部分将被截断)
    • 你说得对,我不知道,这确实很令人惊讶。谢谢
    • 尽管(仅作为精确度)必须注意,原则 1 确实根据您在模式配置中指定的长度使用了 smallint、mediumint 等。例如“type: integer(2)”在数据库中创建了一个 smallint。可能他们认为最好的做法是明确键入您想要的字段类型,而不是基于可视化选择。我仍然为这些年来我以错误的方式使用符号这一事实感到尴尬,但我很高兴我最终知道了它。
    猜你喜欢
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多