我试图模仿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
)引用roles
(id
))(绑定:数组())
做这件事的正确方法是什么?或者我在哪里做错了?
谢谢!
您很可能也忘记了将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 的参考链接