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
Просто хотел опубликовать другое решение, которое, я думаю, стоит упомянуть.
- Найдите строку с вашим именем миграции в таблице миграций и УДАЛИТЕ ее. Это должно выглядеть так: 2016_06_01_000001_create_oauth_auth_codes_table
- Удалить вашу таблицу из базы данных, например, DROP TABLE oauth_auth_codes
- Запустите php artisan migrate
Он перенесет только тот стол, который вам нужен, и больше ничего не коснется
Ответ 5
Вы можете только откатить:
php artisan migrate:rollback
https://laravel.com/docs/5.4/migrations#rolling-back-migrations
Вы можете указать, сколько миграций нужно выполнить для возврата к использованию опции "step":
php artisan migrate:rollback --step=1
Некоторые трюки доступны здесь:
Откат одной конкретной миграции в Laravel
Ответ 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
Ответ 13
Вы можете использовать это.
→ https://packagist.org/packages/sayeed/custom-migrate
→ https://github.com/nilpahar/custom-migration/
это очень легко использовать
Ответ 14
Самый простой способ - удалить таблицы на PHP MyAdmin или Mongodb, а затем запустить php artisan migrate