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



我试图模仿wordpress的主键大小,它是BIGINT(20),但似乎laravel没有本地函数来做到这一点。。我在laravel论坛上看到了一个页面,得到了这样的代码:

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

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

[例外]SQLSTATE[HY000]:一般错误:1005无法创建表"db"#sql-1730_15'(错误号:150)(SQL:更改表users添加约束users_role_id_eforeign外键(role_id)引用rolesid))(绑定:数组())

做这件事的正确方法是什么?或者我在哪里做错了?

谢谢!

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


顺便说一句,Laravel确实有一个本地功能可以做到这一点:

$this->bigIncrements('id');

这会使其无符号自动递增主键

当使用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 
        });
}

Laravel 4.2 Doc 的参考链接

最新更新