Я сломал свою структуру 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 миграция работает нормально, если вы делаете это правильно.

я также много раз переименовывал свои файлы миграции, и это работает, как и ожидалось,

но если вы хотите переименовать миграцию, вам нужно позаботиться о двух вещах:

  1. сначала переименуйте имя файла

  2. откройте этот файл миграции и переименуйте имя класса также

Переименование файла: измените имя файла с 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 он будет работать, как вы хотите.