当我想用migrate
和migrate:fresh
命令迁移我的迁移时,我得到了This Error
这些是我的迁移:
public function up()
{
Schema::create('notes', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned()->index();
$table->integer('card_id')->unsigned()->index();
$table->text('body');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('card_id')->references('id')->on('card')->onDelete('cascade');
});
}
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('username');
$table->string('email');
$table->string('password');
$table->timestamps();
});
}
public function up()
{
Schema::create('cards', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->timestamps();
});
}
我只是尝试了什么,我不知道我该怎么办[我是laravel的初学者]
基本上您的notes表是在users表之前创建的,因此是外键错误。它可以找到users表,因为它不存在(还)
Laravel按顺序迁移,因此有2个hacks来解决这个问题:
您需要更改迁移文件中的日期和时间,因此在cards
表之前创建了users
和notes
表。
首先要确保在cards
之前创建users
和notes
。
另外代替:
$table->foreign('card_id')->references('id')->on('card')->onDelete('cascade');
使用:
$table->foreign('card_id')->references('id')->on('cards')->onDelete('cascade');
(你有card
而不是cards
)