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() в таблице. Что испробовано:
- Удалены нули в 152 строке файла fluent
- Закоментированы строки с 150 по 155 в файле fluent
- В таблице удален 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(), то тоже убирай. Все заработает и будет счастье :)