Hi read all the included documentation here in https://laravel.com/docs/5.4/migrations.
Is there a way on how to migrate a certain migration file (1 migration only), cause right now every time there is a change I use php artisan migrate:refresh
and all fields are getting reset.
This question is related to
laravel
migration
laravel-5.4
php artisan help migrate
You will see the option:
--path[=PATH] The path to the migrations files to be executed
By the way, you can probably indicate the root folder of the file that you want to migrate:
php artisan migrate --path=/database/migrations/sample.php
Or, You can create a new folder in migrations, then migrate all the migration files you want inside it:
php artisan migrate --path=/database/migrations/new_folder
you should add the path to your migration file to refresh just this table and run
php artisan migrate:refresh --path=/database/migrations/fileName.php
Just wanted to post another solution, which i think is worth mentioning.
It will migrate only the table you need, and won't touch anything else
You need to put the file(s) into a new directory (ex:selected) and then apply
php artisan migrate --path=/database/migrations/selected
if you need rollback:
php artisan migrate:rollback --path=/database/migrations/selected
Note:
php artisan migrate:refresh
this will rollback and then migrate all the migrations files in the default directory (/database/migrations)
You could try to use the --path= option to define the specific sub-folder you're wanting to execute and place specific migrations in there.
Alternatively you would need to remove reference and tables from the DB and migrations tables which isn't ideal :/
You can only rollback:
php artisan migrate:rollback
https://laravel.com/docs/5.4/migrations#rolling-back-migrations
You can specify how many migrations to roll back to using the 'step' option:
php artisan migrate:rollback --step=1
Some tricks are available here:
Correction- remove slash before the database
$ php artisan migrate --path=database/migrations/migration.php
php artisan migrate --path=database/migrations/2020_04_10_130703_create_test_table.php
note: after --path no / before
Just look at the migrations
table in your database, there will be a list of migration file name and batch number value.
Suppose you have following structure,
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
If you want to just rollback 2016_09_07_103432_create_tabel_roles
migration,
change it's migration batch value to 2 which is highest among all and then just execute following.
php artisan migrate:rollback
Here only table with batch value 2 will be rolled back. Now, make changes to that table and run following console command.
php artisan migrate
Batch value in the migrations
table defines order of the migrations. when you rollback, migrations that are latest or have highest batch value are rolled back at first and then others. So, you can change the value in database and then rollback a particular migration file.
Although it's not a good idea to change batch number every time because of relationship among the table structure, we can use this case for some cases where single table rollback doesn't violates the integrity among the tables.
Hope you understand.
Specific Table Migration
php artisan migrate --path=/database/migrations/fileName.php
If you want to create one and specific table. You can use this code. It works for laravel(5.x) versions.
php artisan migrate:refresh --path=/database/migrations/fileName.php
You can use this.
-> https://packagist.org/packages/sayeed/custom-migrate
-> https://github.com/nilpahar/custom-migration/
this is very easy to use
You can only run this command in your terminal
php artisan migrate --path=database/migrations/2020_10_01_164611_create_asset_info_table.php
After migrations you should put the particular file name. or if you have any folder inside migration then just add that folder name after the migration.
Like this
php artisan migrate --path=database/migrations/yourfolder/2020_10_01_164611_create_asset_info_table.php
I hope this will help you a lil bit. Happy Coding.
php artisan migrate --path=/database/migrations/fileName.php
You don't have to refresh for migration because refresh means Rollback all migrations and run them all again.
if you use tab for autocomplete
php artisan migrate --path='./database/migrations/2019_12_31_115457_create_coworking_personal_memberships_table.php'
You can run command like this
php artisan migrate --path=/database/migrations/2020_04_10_130703_create_test_table.php
If you want to create another table, just create a new migration file. It's will work.
If you create an migration named users_table
with id, first_name, last_name
. You can create an migration file like
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');
}
If you want to add another filed like "status" without migrate:refresh. You can create another migration file like "add_status_filed_to_users_table"
public function up()
{
Schema::table('users', function($table) {
$table->integer('status');
});
}
And don't forget to add the rollback option:
public function down()
{
Schema::table('users', function($table) {
$table->dropColumn('status');
});
}
And when you run migrate with php artitsan migration
, It just migrate the new migration file.
But if you add filed "status" into the first mgration file (users_table) and run migration. It's nothing to migrate. You need to run php artisan migrate:refresh
.
Hope this help.
php artisan migrate --path=/database/migrations/fileName.php
Just follow the instruction execute this commant file name here should be your migration table name Example: php artisan migrate --path=/database/migrations/2020_02_21_101937_create_jobs_table.php
First you should to make the following commands:
Step 1:
php artisan migrate:rollback
Step 2:
php artisan migrate
Your table will be back in database .
Delete the table and remove its record from migration table.
After that you just run migration again:
php artisan migrate
Or you can simply delete migration file name from your database, in "migrations" table and then run : php artitsan migration
install this package
https://github.com/nilpahar/custom-migration/
and run this command.
php artisan migrate:custom -f migration_name
Source: Stackoverflow.com