Improved model generation with Laracademy Generators
Published on by Diaa Fares
Laravel provides the Artisan command line tool that allows you to save time by including several generators. Some examples include make:controller, make:model, and make:migration.
Building on top of this idea is a third party package named Laracademy Generators that will automatically generate your models based on your database structure.
Installation:
Let’s explore the workflow when using Laracademy Generators:
First, create your migration as always:
php artisan make:migration create_posts_table —create=posts
Then add your fields to the generated migration file. For example, your field might look like:
public function up(){ Schema::create(‘posts’, function (Blueprint $table) { $table->increments(‘id’); $table->string(‘title’); $table->text(‘body’); $table->boolean(‘featured’); $table->datetime(‘publish_date’); $table->timestamps(); });}
After that, you will migrate your tables by execution the following command in your terminal:
php artisan migrateMigrated: 2016_08_26_145636_create_posts_table
Now let’s install Laracademy Generators:
composer require "laracademy/generators"
Then add Laracademy Generators into your config/app.php file:
Laracademy\Generators\GeneratorsServiceProvider::class
Alternatively, you can add the provider to your ‘app/Providers/AppServiceProvider.php’ if you only want to use this provider for local development:
public function register(){ if($this->app->environment() == 'local') { $this->app->register('\Laracademy\Generators\GeneratorsServiceProvider'); }}
Now you have everything you need to start using the Laracademy Generators. Let’s explore how to use it and what are the available options.If you check your Artisan cli, a new command will appear in the list:
generate:modelfromtable
First, you can pass –all flag to tell Laracademy Generators to generate models for all tables existed in your database:
php artisan generate:modelfromtable --all
Another option is –table which makes you be able to specify the tables that you want Laracademy Generators to generate models for, like this:
php artisan generate:modelfromtable --table=posts
Or multiple tables at once:
php artisan generate:modelfromtable --table=users,posts
There are another two options; one is for choosing your database connection (–connection=example) and the second is for specifying you where the generated models goes (–folder=app\Models).
Take a look at what the generated model looks like, if you are following along with me in the posts table example, the generated app/Post.php content will look like this:
Just note that the generated code will often require some edits but it gives you a great starting point.
Give Laracademy Generators a try if you are looking for away to speed up your development process. You can check out the source code of Laracademy Generators at Github.