如何在Laravel 4中使用BIGINT作为自动递增主键

时间:2013-07-28 03:50:48

标签: php mysql laravel laravel-4

我正在尝试模仿wordpress' primary key size这是BIGINT(20),但似乎laravel没有本地函数来执行此操作..我看到了page in the laravel forums并得到了这样的代码:

$table->bigInteger('id')->primary();

但是当我在artisan migrate期间尝试将外键附加到该ID时,会抛出一个MYSQL错误:

  
    

[异常]     SQLSTATE [HY000]:常规错误:1005无法创建表'db。#sql-     1730_15'(错误号:150)(SQL:alter table users添加约束users_role_id_foreign外键(role_id)引用rolesid))(绑定:数组(     ))

  

这样做的正确方法是什么?我在哪里弄错了?

谢谢!

2 个答案:

答案 0 :(得分:16)

您很可能忘记将role_id外键的类型也设置为BIGINT(20)。这不是Laravel的问题,而是MySQL的问题。


顺便说一句,Laravel确实有一个本地功能来执行此操作:

$this->bigIncrements('id');

这需要使未签名自动增量主键

答案 1 :(得分:2)

在使用bigInteger()并将其应用于某些表中的外键时,请确保将其与unsignedBigInteger()正确连接,

public function up()
{
        Schema::create('create_this_table_after_users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedBigInteger('user_id');
           // Other Columns
        });
        Schema::table('create_this_table_after_users', function($table) {
            $table->foreign('user_id')->references('id')->on('users');
            // Other Constraints 
        });
}