Какой кэш 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 каким-то образом все еще ищет файл старых людей:
Я попытался очистить кэш приложения с помощью php artisan cache:clear
, но все равно получаю ошибку.
Есть ли определенный кэш, который мне нужно очистить, чтобы удалить ссылку на исходный файл миграции?
2 answers
Это не проблема с кэшем. Вам просто нужно снова запустить composer:
composer dump-autoload
Откатите миграцию и проверьте
migrate:rollback