Какой кэш Laravel мне нужно очистить, чтобы удалить ошибку об отсутствующем файле миграции?


У меня есть несколько миграций таблиц в моем приложении. Таблицы следующие:

  • люди
  • навыки
  • средства массовой информации
  • примечания

Между people и каждой из других таблиц существует отношение "один ко многим".

// The people table definition

Schema::create('people', function (Blueprint $table) {
    $table->uuid('id');
    $table->primary('id');
    ...
    $table->timestamps();
});


// the skill table definition with the foreign key constraint referencing people

Schema::create('skills', function (Blueprint $table) {
    $table->uuid('id');
    $table->primary('id');
    $table->uuid('person_id');
    $table->foreign('person_id')
            ->references('id')->on('people')
            ->onDelete('cascade');
    ...
    $table->timestamps();
});

Когда я создавал миграции через artisan Я случайно создал файл миграции skills перед миграцией people.

Это вызвало проблему, потому что при запуске php artisan migrate файлы запускаются в порядке временных меток и если первичный ключ не установлен до определения ограничения внешнего ключа, вы получите ошибку, например

Файл:

2016_02_24_174227_create_people_table.php

Запустит после файл:

2016_02_24_174221_create_skills_table.php

Потому что файл skills имеет меньший префикс временной метки в имени (17:42:21 предшествует 17:42:27). Это означает, что ограничение внешнего ключа в skills ищет первичный ключ в people, который еще не существует.

Поэтому, чтобы исправить это, я переименовал файл 2016_02_24_174227_create_people_table.php в 2016_02_24_170000_create_people_table.php.

Это исправление сработало, но теперь всякий раз, когда я php artisan migrate:refresh мои таблицы, я получаю сообщение об ошибке, в котором говорится, что artisan каким-то образом все еще ищет файл старых людей:

artisan error

Я попытался очистить кэш приложения с помощью php artisan cache:clear, но все равно получаю ошибку.

Есть ли определенный кэш, который мне нужно очистить, чтобы удалить ссылку на исходный файл миграции?

Author: Chris Schmitz, 2016-03-04

2 answers

Это не проблема с кэшем. Вам просто нужно снова запустить composer:

composer dump-autoload
 7
Author: Joseph Silber, 2016-03-04 17:32:30

Откатите миграцию и проверьте

migrate:rollback
 1
Author: Santosh Ram Kunjir, 2016-03-04 17:35:28