This is something that I had always asked myself. "How to add a new column to a table without having to go directly to the database or rollback the migrations?"
Laravel does not generate the migrations automatically through the models as Django or Entity Framework does, but we need to do it manually.
Imagine that you have an application in production and you need to add a new column to the user table. Instead of rollback your migrations (which would cause the data to be lost) you can create a new migration to update the existing table.
We execute the following command:
$ php artisan make:migration add_picture_column_to_user_table --table=users
Then run the migrations using
php artisan migrate and that's all. You'll have this new column in your users table without losing previously stored data.