如何获得原则以生成具有BIGANT类型的sql


How to get doctrine to generate sql with BIGINT type?

在我的模式中,我有许多需要BIGINT的字段。我使用来自Symfony的以下命令

symfony doctrine:build-sql

以生成我的数据库。这些字段始终显示为类型 int 。我在架构中尝试了以下类型:

  • int
  • {type: integer, notnull: true}
  • {type: integer(5), notnull: true}
  • {type: bigint, notnull: true}

它们似乎都不起作用(我总是在构建 SQL 之前重建模型)。

我应该在schema.yml中放入什么类型?

使用

Symfony 2.x(例如 Doctrine 2.4.1)和实体上的 PHP 注释,使用 @ORM'Column(name="id", type="bigint") 会产生 MySQL bigint(20)

注意:OP用symfony1和doctrine1标记了这个问题,这个解决方案将不起作用

这取决于

你的RDBMS,但是如果你使用MySQL,你可以阅读lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/Mysql.php

    case 'integer':
    case 'int':
            if ( ! empty($field['length'])) {
                $length = $field['length'];
                if ($length <= 1) {
                    return 'TINYINT';
                } elseif ($length == 2) {
                    return 'SMALLINT';
                } elseif ($length == 3) {
                    return 'MEDIUMINT';
                } elseif ($length == 4) {
                    return 'INT';
                } elseif ($length > 4) {
                    return 'BIGINT';
                }
            }
            return 'INT';

所以你的第二次尝试应该奏效了...还是使用另一个RDBMS?您应该在此代码行设置断点并进行分步调试,这很奇怪。另外,检查您的Mysql.php文件的内容,看看您是否与我有相同的东西(我使用sf 1.4.11附带的原则)

是的,integer(5) 应该可以完成这项工作。

您可以在 symfony 和 Doctrine 一书中检查其他模式数据类型,但请记住,它是 1.2 版本,不再维护。

此致敬意。