"php artisan migrate" показывает "нечего переносить"

Я новичок в laravel. Я работаю над laravel версии 6. Я создал миграцию. В первый раз он работает хорошо, но если я что-то изменю в файле миграции, а затем запустилphp artisan migrate это показывает nothing to migrate. Я попыталсяphp artisan migrate --pathтакже, но это не работает. Чтобы он заработал, мне нужно удалить файл миграции и создать его снова. Я не хочу использоватьphp artisan migrate:fresh.

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

8 ответов

Когда ты бежишь php artisan migrate он проверит таблицу миграции, если в папке миграции нет нового файла, он не покажет вам ничего для миграции.

Если вы хотите откатить последнюю миграцию.

Чтобы rollbackпоследнюю операцию миграции, вы можете использовать команду отката. Эта команда откатывает последний "пакет" миграций, который может включать несколько файлов миграции:

php artisan migrate:rollback

Он удалит последнюю созданную таблицу.

В migrate:reset команда откатит все миграции вашего приложения:

php artisan migrate:reset

В migrate:fresh команда отбросит все таблицы.

php artisan migrate:fresh

php artisan migrate:fresh --seed

подробнее: документ

К сожалению, невозможно. Лучшее решение - использовать сеялки и использоватьphp artisan db:seed после использования php artisan migrate:fresh. Почему ты не хочешь это использовать?

Если у вас есть данные сеялки, просто выполните: php artisan migrate: fresh - seed . Это поможет повторно перенести вашу миграцию с данными сидера

Есть две вещи, которые вы можете использовать 1. В вашей базе данных есть таблица, которая называется миграциями. Удалите оттуда строки, которые вы хотите перенести. Это должно быть там. 2. создайте папку внутри папки database/migrations/. И поместите файл миграции в папку, а затем в командной строке выполните следующую команду:

php artisan migrate:refresh --path=database/migrations/folder

вариант 2 лучше, чем вариант 1. Я всегда им пользуюсь. Поэтому я рекомендую вариант 2. Это должно работать.

Для каждой модификации существующих (уже перенесенных таблиц) вам нужно будет выполнить новую миграцию только с изменениями. Если у вас есть миграция таблицы "пользователи"2014_10_12_000000_create_users_table нравиться:

 Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');         
        $table->rememberToken();
        $table->timestamps();
    });

и вам нужно разделить столбец "имя", придется php artisan make:migration alter_table_users --table="users" и добавьте то, что хотите изменить:

Schema::table('users', function (Blueprint $table) {
    $table->renameColumn('name', 'first_name'); // rename column
    $table->string('last_name'); // add new column  });

Обеспечить регресс

public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->renameColumn('first_name', 'name');
            $table->dropColumn('last_name');
        });
    }

Но ты можешь использовать php artisan migrate

Документация: https://laravel.com/docs/6.x/migrations

Вы проверили, была ли миграция уже запущена или нет в таблице миграции. При его запуске будет строка, соответствующая вашей миграции. Если вы внесете изменения в старую миграцию, то при запуске команды php artisan migrate ничего не отразится, поскольку она уже была перенесена.

Вы плохо разбираетесь в механике миграции.

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

Вы пишете миграцию, чтобы внести некоторые изменения в базу данных, и запускаете ее один раз. Если вы хотите выполнить следующие обновления базы данных, вам потребуется следующая миграция.

В процессе разработки вы можете повторно запустить миграции, php artisan migrate:fresh, но в производственной среде убедитесь, что ваша миграция делает все, что вы хотите.

Laravel хранит информацию о миграциях в базе данных в таблице "миграции". Если вы хотите сбросить некоторые файлы миграции, вы можете попробовать удалить или отредактировать некоторые записи в этой таблице.

Никто не ответил на вопрос «Акшай Ратод», но «Милитару» ответил именно то, что ему нужно. php artisan make:migration alter_table_users --table="users"и скопируйте новые поля внутри функции up(), как показано ниже.

      public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->string('userimage')->nullable();
            $table->string('contact_no')->nullable();
            $table->string('website')->nullable();
            $table->string('country_id')->nullable();
            $table->string('timezone')->nullable();
            $table->string('currency')->nullable();
            $table->string('communication_email')->default(1);
            $table->string('communication_phone')->default(0);
            $table->string('allow_marketing')->default(0);
        });
    }
Другие вопросы по тегам