Laravel Package Migration add column to existing App Migration in Database - laravel-5

I'm creating a Laravel Package that will migrate / add a column to an already existing App Migration that was migrated prior to package being installed.
Is there any best methods for setting something like this up? And if so, how do you manage reset/refresh migrations from App and Package.
OR
Is it better to keep them both separate in that the Package Migration overrides all migrations that the App Migration would have done.
Thanks.

Its always better to keep the column modifications in a separate migration unless and until0l you are so sure that your package is not used anywhere as of now. For existing installations it may cause problem with migration/rollback if you modify the existing migration. So i would recommend going with a new migration for column changes

Related

Laravel Voyager installation issue

I just finished my first laravel project> Now I only need to install an admin panel. I tried to install Laravel Voyager but I got an issue because I had a role table already created, So it stopped the installation. Is there a way to fix this issue or should I use admin panel, what do you advice me ?
I already had a role table with helpers methods and data that I am currently using. I completely unistall it and I delete all files that I got during the installation.
In the past, I run into the same issue with Voyager, with my previous users and a roles table. Since I had logic already in place for the user's/role table design, what I did was fuse both tables migrations into one. In detail these are the steps I went through to accomplish that:
Create new database for Voyager's installation.
Update.env to access new DB (would be advisable to clear cache after).
Install Voyager php artisan voyager:install (after Voyager vendor was installed using composer).
Copy Voyagers migrations to database/migrations, make your changes, turn off the config option database.autoload_migrations (full guidance for this step can be found in https://voyager-docs.devdojo.com/getting-started/installation#advanced).
Merge conflicting migrations files (in this case the roles table, or any other that can conflict with Voyager's migrations), meaning bringing columns needed from the previous migration into Voyager's migration file.
Delete all tables from the database again (since migrations tables were modified) and run php artisan migrate.
Now you should end-up having the previous roles table (with previous and new Voyagers columns, and definitions), without affecting the Voyager's tables functionality :)

Laravel Migrations Scripts

I would like to know is there any feature in laravel to generate migration scripts dynamically ( I mean scripts not migration files) like in Doctrine?
I have researched in the internet but didn't find a solution.
In Eloquent I generated migration files and wrote migration scripts manully. But in Doctrine I can generate migration script from entities (models) by issuing command migrations:diff, migrations:migrate etc. Thanks in advance.
You never define any of your table's fields in your Model class, so Laravel doesn't even know where to get the diff in your database.
But if your database is already there, check this question: how to create migration from existing database in laravel

Can Laravel generate all mvc skeleton out of an existing table like that of cakephp's command cake bake all

I found laravel very interesting. But I'm wondering if there's any artisan command to generate all MVC skeleton files provided a database table all at ones. And how about separate generation of especially the model, given the table structure? or is there any alternative way to do the code generating?
You can create a migration file from the table via the package below.
https://github.com/Xethron/migrations-generator
Install it via : composer require --dev "xethron/migrations-generator"
Follow the package instructions, After connecting you application with the database simply run php artisan migrate:generate.
You will see number of migrations created via console message, You can also check your database/migrations folder for confirmation.
I didn't find how to do that, so I created my own code in order to create the models:
https://github.com/Triun/laravel-model-base
It is not super documented, but you can actually write your own addons in order to add custom business behaviors or include your own interfaces or traits to your models, with your own code.
And of course, reports and contributions are more than welcome.
I hope this helps.

lumen doesn't use the right database directory on migration

in Lumen when i try to create a database migration the artisan try to store the migration file on my-project/database folder which causes an error because the migration folder in Lumen located under my-project/model/migration. so why artisan doesn't use the Lumen migration folder.
As you have stated that lumen tries to store the migrations inside the database/migrations and it is the intended behaviour and is by the design.
If you want the proof it is here:
https://lumen.laravel.com/docs/5.4/database#migrations
It has already stated that it uses laravel type of migration behaviour.
So, you must try to maintain the structure if you want to create and run migration using default standard, which would be great if in near future you want to migrate to laravel from lumen.
Also you have stated that lumen's migration is inside model. It was never there by the design. You might have changed the folder structure of the migrations.
Want the proof :
https://github.com/laravel/lumen/tree/master/database/migrations
https://github.com/laravel/lumen/tree/5.0/database/migrations
https://github.com/laravel/lumen/tree/5.2/database/migrations
https://github.com/laravel/lumen/tree/5.3/database/migrations
Hope it clears your confusions.

create first user in Laravel 5

This is my first time using Laravel 5. Never experienced with any of other framework like CakePHP, CodeIgniter, Yii, etc. I just know how to use make api REST with slim framework.
I already create a table users as I can't access <<URL>>/home. I create fields and load it some data. Whenever I want to try reset the password, it show error because I dont have table password_resets. What are the steps to be taken after install the Laravel actually.
Thanks
You don't need to create any table manually (and you shouldn't). In Laravel you have migrations that help you quickly create tables in your database and seeds (where you can put initial data to those tables).
In fresh Laravel installation you have 2 ready migrations (for creating users and password_resets tables). All you need to do is running your console, go to directory where you have your Laravel project and run:
php artisan migrate
to run those migrations. After running this command Laravel will create those 2 tables for you. Before, you need to have configured your database connection (look at config/database.php file)

Resources