您好,請閱讀https://laravel.com/docs/5.4/migrations中的所有文檔。Laravel 5.4特定表遷移
有沒有關於如何遷移某個遷移文件(僅遷移一次)的方法,現在每當有變更時都會導致我使用php artisan migrate:refresh
並且所有的字段都被重置。
您好,請閱讀https://laravel.com/docs/5.4/migrations中的所有文檔。Laravel 5.4特定表遷移
有沒有關於如何遷移某個遷移文件(僅遷移一次)的方法,現在每當有變更時都會導致我使用php artisan migrate:refresh
並且所有的字段都被重置。
只要查看數據庫中的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:rollback
https://laravel.com/docs/5.4/migrations#rolling-back-migrations
您可以指定多少遷移回滾到使用 '步' 選項:
php artisan migrate:rollback --step=1
一些技巧,都可以在這裏:
您可以嘗試使用--path =選項來定義您希望執行的特定子文件夾,並在其中放置特定的遷移。
或者你需要從DB和遷移表這是不理想的去除參考和表:/
如果你想創建另一個表,只需創建一個新的遷移文件。這是可行的。
如果您使用id, first_name, last_name
創建名爲users_table
的遷移。您可以創建一個遷移文件,如
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');
}
如果要添加另一個類似「status」的字段而不遷移:刷新。你可以創建一個像「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
。
希望得到這個幫助。
首先,你應該創建一個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/
希望我的回答對你有用!!!
謝謝。這正是我所期待的。 – sadiq
刪除表並從遷移表中刪除其記錄。
之後,你只需再次運行遷移:
php artisan migrate
感謝這個,它清除了東西。 @sagar gautam –
@MartneyAcha我很高興你有解決你的問題乾杯! –