Я сломал свою структуру Laravel с переименованием миграции
У меня была хорошая рабочая структура Laravel с миграциями баз данных и посевом.
Но я хотел, чтобы мой файл миграции, классы, таблица db были переименованы в CreateOrganizationsTable вместо CreateOrganisationsTable
Итак, я изменил имя файла миграции, все классы и маршруты.
Но когда я выполняю php artisan migrate:reset
в своем поле Homestead, я получаю следующую ошибку:
PHP Fatal error: Class 'CreateOrganisationsTable' not found in /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php on line 299
Artisan создал некоторую ссылку, которую я не могу исправить в данный момент.
Ответы
Ответ 1
Как сказал Мораль, вы должны reset или откат до точки перед новой миграцией или внести изменения вручную. Я знал это, но по-прежнему возникал проблема после изменения только временных меток, чтобы миграция выполнялась в другом порядке.
Вы должны запустить composer dump-autoload
, даже если вы не изменили имя класса.
Ответ 2
Не забудьте также переименовать класс внутри файла
Ответ 3
Проблема заключается в том, что при запуске команды migrate:reset
ремесленник хочет вызвать метод down для всех классов. И поскольку вы переименовали класс, он больше не может его найти!
Итак, перед переименованием вашего класса и/или файла запустите php artisan migrate:reset
, который очистит вашу базу данных и удалит все таблицы, а сразу после этого просто запустите php artisan migrate
. У вас должна быть рабочая база данных снова.
Если команда migrate:reset
по-прежнему не работает, вы можете просто удалить таблицы вручную (не забудьте также удалить таблицу миграции) и снова запустить php artisan migrate
.
Изменить: Если вы действительно не хотите запускать migrate:reset
, но просто переименуйте перенос, вы можете отредактировать имя файла (и класса). Но после этого вы должны вручную отредактировать таблицу migrations
в своей базе данных. Найдите соответствующую строку и отредактируйте имя файла в соответствии с новым именем.
Ответ 4
У меня были аналогичные проблемы с PHP-мастером: rollback, и я только что открыл свой проект laravel и перешел в следующий каталог:
поставщик\композитор\autoload_static.php
и изменил имя измененной php-миграции, надеюсь, что это поможет вам:)
Ответ 5
Я выполнил композицию dump-autoload, и теперь все работает отлично.
Ответ 6
Если вы используете композитор, то я думаю, что вы забыли сбросить-автозагрузка
composer dump-autoload
Ответ 7
В переименовании laravel миграция работает нормально, если вы делаете это правильно.
я также много раз переименовывал свои файлы миграции, и это работает, как и ожидалось,
но если вы хотите переименовать миграцию, вам нужно позаботиться о двух вещах:
-
сначала переименуйте имя файла
-
откройте этот файл миграции и переименуйте имя класса также
Переименование файла: измените имя файла с 2019_06_28_131130_create_organisations_able
на 2019_06_28_131130_create_organizations_able
или на любое 2019_06_28_131130_create_organizations_able
имя, которое вы хотите.
Откройте этот файл миграции и переименуйте имя класса в этом файле согласно вашему новому имени:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
//change it from
//class CreateOrganisationsTable extends Migration {
//to
class CreateOrganizationsTable extends Migration {
Я думаю, что вы переименовали файл миграции, но вы забыли переименовать имя класса, так что сделайте это и попробуйте запустить php artisan migrate:refresh
он будет работать, как вы хотите.