こんにちは https://laravel.com/docs/5.4/migrations に含まれるすべてのドキュメントを読んでください。
特定の移行ファイルを移行する方法はありますか(1回の移行のみ)、今すぐphp artisan migrate:refresh
を使用し、すべてのフィールドがリセットされるたびに変更が発生します。
最初に、テーブル用にmigration
ファイルを1つ作成する必要があります。
public function up()
{
Schema::create('test', function (Blueprint $table) {
$table->increments('id');
$table->string('fname',255);
$table->string('lname',255);
$table->rememberToken();
$table->timestamps();
});
}
作成後testフォルダー内のmigrationsフォルダー、次に新規作成migration移動/コピーされたtestフォルダー内で以下のコマンドを実行あなたのterminal/cmdのように:
php artisan migrate --path=/database/migrations/test/
データベースの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
移行のみをロールバックする場合は、移行バッチの値を2に変更します。これはすべての中で最も高く、次のように実行します。
php artisan migrate:rollback
ここでは、バッチ値2のテーブルのみがロールバックされます。次に、そのテーブルを変更し、次のコンソールコマンドを実行します。
php artisan migrate
migrations
テーブルのバッチ値は、移行の順序を定義します。ロールバックすると、最新のバッチ値または最高のバッチ値を持つ移行が最初にロールバックされ、次に他の移行がロールバックされます。そのため、データベースの値を変更してから、特定の移行ファイルをロールバックできます。
テーブル構造間の関係のため、毎回バッチ番号を変更することはお勧めできませんが、単一のテーブルロールバックがテーブル間の整合性に違反しない場合にこのケースを使用できます。
ご理解ください。
このテーブルだけを更新して実行するには、移行ファイルにパスを追加する必要があります
php artisan migrate:refresh --path=/database/migrations/fileName.php
言及する価値があると思う別のソリューションを投稿したかっただけです。
必要なテーブルのみを移行し、他には何も触れません
ファイルを新しいディレクトリ(ex:selected)に配置してから適用する必要があります
php artisan migrate --path=/database/migrations/selected
ロールバックが必要な場合:
php artisan migrate:rollback --path=/database/migrations/selected
注:
php artisan migrate:refresh
これにより、デフォルトのディレクトリ(/ database/migrations)にあるすべての移行ファイルがロールバックされて移行されます
php artisan help migrate
オプションが表示されます:
--path [= PATH]実行される移行ファイルへのパス
ところで、移行するファイルのルートフォルダーを指定できます。
php artisan migrate --path=/database/migrations/sample.php
または、移行で新しいフォルダーを作成し、その中に必要なすべての移行ファイルを移行できます。
php artisan migrate --path=/database/migrations/new_folder
テーブルを削除し、移行テーブルからそのレコードを削除します。
その後、移行を再度実行します。
php artisan migrate
ロールバックのみ可能です:
php artisan migrate:rollback
https://laravel.com/docs/5.4/migrations#rolling-back-migrations
「step」オプションを使用して、ロールバックする移行の数を指定できます。
php artisan migrate:rollback --step=1
ここにいくつかのトリックがあります:
または、「migrations」テーブルでデータベースから移行ファイル名を削除してから実行するだけです。php artitsan migration
修正-データベースの前のスラッシュを削除
$ php artisan migrate --path=database/migrations/migration.php
--path =オプションを使用して、実行する特定のサブフォルダーを定義し、そこに特定の移行を配置することができます。
または、理想的なものではない参照およびテーブルをDBおよび移行テーブルから削除する必要があります:/
別のテーブルを作成する場合は、新しい移行ファイルを作成してください。うまくいくでしょう。
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');
}
Migrate:refreshを使用せずに「ステータス」などの別のファイルを追加する場合。 「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');
});
}
また、php artitsan migration
を指定して移行を実行すると、新しい移行ファイルが移行されます。
ただし、ファイルされた「ステータス」を最初のmgrationファイル(users_table)に追加し、移行を実行した場合。移行するものは何もありません。 php artisan migrate:refresh
を実行する必要があります。
この助けを願っています。
これを使用できます。
-> https://packagist.org/packages/sayeed/custom-migrate
-> https://github.com/nilpahar/custom-migration/
これは非常に使いやすいです