Предполагая, что это одна миграция с созданием обеих таблиц. Что, на мой взгляд, не лучшая идея. Лучше разделить каждую таблицу на собственную миграцию.
Попробуйте переключить оба блока создания. Таким образом, прежде чем что-либо о posts
-таблице будет сделано, authors
-таблица уже создана.
Поскольку вы пытаетесь установить внешний ключ из posts
-таблицы в еще не созданную authors
-таблицы, но оба они должны существовать.
Я также склонен отделять ограничения внешнего ключа от фактической структуры таблицы для лучшего обзора. Но это было бы личное мнение.
Schema::create('authors', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('fist_name');
$table->string('last_name');
$table->binary('pic')->nullable();
$table->timestamps();
$table->softDeletes();
});
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('author_id');
$table->string('title');
$table->text('excerpt');
$table->longText('body');
$table->binary('post_image');
$table->timestamp('published_at')->nullable();
$table->timestamps();
$table->softDeletes();
$table->foreign('author_id')->references('id')->on('authors')->onDelete('cascade');
});
Надеюсь, что это может немного помочь.