Php can'上的一对一关系错误;t运行artisan命令时更改表
我有多个包,用户一次只能有一个包,不能有多个。因此,我创建了一对一关系,并在users表中添加了一个外键 以下是相关用户表:Php can'上的一对一关系错误;t运行artisan命令时更改表,php,mysql,laravel-5.2,Php,Mysql,Laravel 5.2,我有多个包,用户一次只能有一个包,不能有多个。因此,我创建了一对一关系,并在users表中添加了一个外键 以下是相关用户表: public function up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
$table->string('role');
$table->unsignedInteger('package_id');
$table->rememberToken();
$table->nullableTimestamps();
$table->foreign('package_id')
->references('id')
->on('packages');
});
}
这是包裹表:
public function up()
{
Schema::create('packages', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->integer('price');
$table->integer('space');
$table->string('space_type');
$table->string('trial')->nullable();
$table->string('trial_period')->nullable();
$table->string('password_protected_links')->nullable();
$table->nullableTimestamps();
});
}
但是,当我运行php artisan migrate:refresh时,出现了以下错误:
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1005 Can't create table 'clouder.#sql-834_1
4' (errno: 150) (SQL: alter table `users` add constraint users_package_id_f
oreign foreign key (`package_id`) references `packages` (`id`))
[PDOException]
SQLSTATE[HY000]: General error: 1005 Can't create table 'clouder.#sql-834_1
4' (errno: 150)
但是,我相信我已经正确创建了外键。还有什么是我犯的错误吗?我现在已经自己解决了这个问题。我遇到的问题是由迁移顺序引起的。
create_users_表
migration附带了Laravel 5.2
当我创建了新的迁移create_packages_表
create_users表第一次迁移的顺序,它是在create_packages_表
之前加载的。因此,当查询试图创建外键
时,它无法在packages
表中找到该列。因此,只需重命名create\u users\u表
date,以确保在create\u packages\u表
修复该问题后加载
我希望以后有人会觉得它有用