Laravel 5.4 Конкретная миграция таблицы

Привет всем, включая документацию, приведенную на https://laravel.com/docs/5.4/migrations.

Есть ли способ переноса определенного файла миграции (только для 1 миграции), вызывать прямо сейчас каждый раз, когда есть изменение. Я использую php artisan migrate:refresh и все поля сбрасываются.

Ответ 1

Сначала вы должны создать один файл migration для вашей таблицы, например:

public function up()
    {
        Schema::create('test', function (Blueprint $table) {
            $table->increments('id');
            $table->string('fname',255);
            $table->string('lname',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }

После создания тестовой папки в папке миграций, затем вновь созданная миграция перемещается/копируется в тестовую папку и запускается под командой ниже в вашем терминале /cmd, как:

php artisan migrate --path=/database/migrations/test/

Ответ 2

Посмотрите таблицу migrations в своей базе данных, появится список имени файла миграции и номера партии.

Предположим, что у вас есть следующая структура,

id     migration                                           batch

1      2014_10_12_000000_create_users_table                  1 
2      2014_10_12_100000_create_password_resets_table        1
3      2016_09_07_103432_create_tabel_roles                  1

Если вы хотите просто 2016_09_07_103432_create_tabel_roles миграцию 2016_09_07_103432_create_tabel_roles, измените значение ее миграции на 2, что является самым высоким среди всех, а затем просто выполните следующее.

php artisan migrate:rollback

Здесь будет откат только таблица с пакетным значением 2. Теперь внесите изменения в эту таблицу и выполните следующую консольную команду.

php artisan migrate

Пакетное значение в таблице migrations определяет порядок миграции. когда вы откатываете, сначала переносятся миграции, которые являются последними или имеют наибольшее значение партии, а затем другие. Таким образом, вы можете изменить значение в базе данных и затем отбросить определенный файл миграции.

Хотя не всегда рекомендуется менять номер партии каждый раз из-за взаимосвязи между структурой таблицы, мы можем использовать этот случай для некоторых случаев, когда откат одной таблицы не нарушает целостность таблиц.

Надеюсь, вы понимаете.

Ответ 3

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

php artisan migrate:refresh --path=/database/migrations/fileName.php

Ответ 4

Просто хотел опубликовать другое решение, которое, я думаю, стоит упомянуть.

  1. Найдите строку с вашим именем миграции в таблице миграций и УДАЛИТЕ ее. Это должно выглядеть так: 2016_06_01_000001_create_oauth_auth_codes_table
  2. Удалить вашу таблицу из базы данных, например, DROP TABLE oauth_auth_codes
  3. Запустите php artisan migrate

Он перенесет только тот стол, который вам нужен, и больше ничего не коснется

Ответ 6

Удалите таблицу и удалите ее запись из таблицы миграции.

После этого вы снова выполните миграцию:

php artisan migrate

Ответ 7

php artisan help migrate

Вы увидите вариант:

--path [= PATH] Путь к файлам миграции, которые должны быть выполнены

Кстати, вы можете указать корневую папку файла, который вы хотите перенести:

php artisan migrate --path=/database/migrations/sample.php

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

php artisan migrate --path=/database/migrations/new_folder

Ответ 8

Вам необходимо поместить файл в новый каталог (например: выбранный), а затем применить

php artisan migrate  --path=/database/migrations/selected

если вам нужен откат:

php artisan migrate:rollback  --path=/database/migrations/selected

Замечания:

php artisan migrate:refresh

это откат, а затем миграция всех файлов миграции в каталоге по умолчанию (/database/migrations)

Ответ 9

Или вы можете просто удалить имя файла миграции из своей базы данных, в таблицу "migrations", а затем запустить: php artitsan migration

Ответ 10

Вы можете попытаться использовать параметр -path = для определения конкретной подпапки, которую вы хотите выполнить, и размещать там определенные миграции.

В качестве альтернативы вам нужно будет удалить ссылку и таблицы из таблиц БД и таблиц миграции, которые не являются идеальными:/

Ответ 11

Если вы хотите создать другую таблицу, просто создайте новый файл миграции. Он будет работать.

Если вы создаете перенос с именем users_table с id, first_name, last_name. Вы можете создать файл миграции, например

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_name',255);
            $table->string('last_name',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }
    public function down()
    {
        Schema::dropIfExists('users');
    }

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

public function up()
{
    Schema::table('users', function($table) {
        $table->integer('status');
    });
} 

И не забудьте добавить вариант отката:

public function down()
{
    Schema::table('users', function($table) {
        $table->dropColumn('status');
    });
}

И когда вы запускаете migrate с помощью php artitsan migration, он просто переносит новый файл миграции.

Но если вы добавите "статус" в первый файл mgration (users_table) и запустите миграцию. Ничего мигрировать. Вам нужно запустить php artisan migrate:refresh.

Надеюсь на эту помощь.

Ответ 12

Correction- удалить слеш перед базой данных

$ php artisan migrate --path=database/migrations/migration.php

Ответ 14

Самый простой способ - удалить таблицы на PHP MyAdmin или Mongodb, а затем запустить php artisan migrate