Laravel при миграции таблиц ошибка Undefined array key 0

Я учусь Laravel по видеоурокам. В видеоуроке такой проблемы нет. Хочу мигрировать таблицу в базу данных. Вот таблица (весь файл):

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string(column:'title');
            $table->text(column:'content');
            $table->unsignedBigInteger(column:'category_id')->nullable();
            $table->timestamps();

            $table->index(columns:'category_id', name:'post_category_idx');
            $table->foreign(columns:'category_id', name:'post_category_fk')->on(table:'categories')->references(columns:'id');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
};

При миграции возникает ошибка:

Migrating: 2022_07_12_170147_create_posts_table

   ErrorException 

  Undefined array key 0

  at C:\Users\Admin\lessonlaravel\blog4\vendor\laravel\framework\src\Illuminate\Support\Fluent.php:152
    148▕      * @return $this
    149▕      */
    150▕     public function __call($method, $parameters)
    151▕     {
  ➜ 152▕         $this->attributes[$method] = count($parameters) > 0 ? $parameters[0] : true;
    153▕
    154▕         return $this;
    155▕     }
    156▕

  1   C:\Users\Admin\lessonlaravel\blog4\vendor\laravel\framework\src\Illuminate\Support\Fluent.php:152
      Illuminate\Foundation\Bootstrap\HandleExceptions::Illuminate\Foundation\Bootstrap\{closure}("Undefined array key 0", "C:\Users\Admin\lessonlaravel\blog4\vendor\larave
l\framework\src\Illuminate\Support\Fluent.php")

  2   C:\Users\Admin\lessonlaravel\blog4\database\migrations\2022_07_12_170147_create_posts_table.php:24
      Illuminate\Support\Fluent::__call("on", ["categories"], "categories")

Я так понимаю ему не нравится nullable() в таблице. Что испробовано:

  1. Удалены нули в 152 строке файла fluent
  2. Закоментированы строки с 150 по 155 в файле fluent
  3. В таблице удален nullable() Не помогает. Как это исправить и сделать миграции?

Ответы (1 шт):

Автор решения: Terrance Fillip

Столкнулся с точно такой же проблемой. Это глюк ларавеля при работе с именованными параметрами.

$table->index(columns:'category_id', name:'post_category_idx');
$table->foreign(columns:'category_id', name:'post_category_fk')->on(table:'categories')->references(columns:'id');

Убери их здесь и, если в каких-то миграциях используешь их в ->default(), то тоже убирай. Все заработает и будет счастье :)

→ Ссылка