在我的模式中,我有许多需要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 版本,不再维护。
此致敬意。