Laravel has awesome set of artisan commands, probably the most often used are make:xxx – like make:model or make:migration etc. But do you know all 21 of them? And, moreover, do you know their parameters which may help to make the code even quicker?

Notice: this article was originally written in August 2017, with 16 commands, now updated in October 2019 for newest Laravel 6 version, with 21 commands.

First, there is a command php artisan list which gives us all the commands, like this:

  make:channel         Create a new channel class
  make:command         Create a new Artisan command
  make:controller      Create a new controller class
  make:event           Create a new event class
  make:exception       Create a new custom exception class
  make:factory         Create a new model factory
  make:job             Create a new job class
  make:listener        Create a new event listener class
  make:mail            Create a new email class
  make:middleware      Create a new middleware class
  make:migration       Create a new migration file
  make:model           Create a new Eloquent model class
  make:notification    Create a new notification class
  make:observer        Create a new observer class
  make:policy          Create a new policy class
  make:provider        Create a new service provider class
  make:request         Create a new form request class
  make:resource        Create a new resource
  make:rule            Create a new validation rule
  make:seeder          Create a new seeder class
  make:test            Create a new test class

Notice: if you’re surprised not to see make:auth command, it was removed in Laravel 6 and separated into its own UI package.

This list above doesn’t give us any information about the parameters or options for these commands. So I want to make an overview of each of them here, starting with the most often used ones.

For that, we will dive into actual code of the framework, inside /vendor/laravel/framework/src/Illuminate folder, and will check what options and undocumented features we have for each command.


1. make:controller

This command creates a new controller file in app/Http/Controllers folder.

Example usage:

php artisan make:controller UserController

Parameters:

--resource

The controller will contain a method for each of the available resource operations – index(), create(), store(), show(), edit(), update(), destroy().

--api

Similar to –resource above, but generate only 5 methods: index(), store(), show(), update(), destroy(). Because create/edit forms are not needed for API.

--invokable

Generates controller with one __invoke() method. Read more about invokable controllers here.

--model=Photo

If you are using route model binding and would like the resource controller’s methods to type-hint a model instance.

--parent=Photo

Officially undocumented parameter, in the code it says “Generate a nested resource controller class” but for me it failed to generate a Controller properly. So probably work in progress.


2. make:model

Create a new Eloquent model class.

Example usage:

php artisan make:model Photo

Parameters:

--migration

or

-m

Create a new migration file for the model.

--controller

or

-c

Create a new controller for the model.

--resource

or

-r

Indicates if the generated controller should be a resource controller.

Yes, you’ve got it right, you can do it like this:

php artisan make:model Project --migration --controller --resource

Or even shorter:

php artisan make:model Project -mcr

But that’s not all to make:model.

--factory

or

-f

Create a new factory for the model.

--all

or

-a

Generate all of the above: a migration, factory, and resource controller for the model.

And even that’s not all.

--force

Create the class even if the model already exists.

--pivot

Indicates if the generated model should be a custom intermediate table model.


3. make:migration

Create a new migration file.

Example usage:

php artisan make:migration create_projects_table

Parameters:

--create=Table

The table to be created.

--table=Table

The table to migrate.

--path=Path

The location where the migration file should be created.

--realpath

Indicate any provided migration file paths are pre-resolved absolute path.

--fullpath

Output the full path of the migration.


Hey, this is Povilas! Do you like my article about Laravel?
We can also help to generate Laravel code!
Try our QuickAdminPanel.com

4. make:seeder

Create a new database seeder class.

Example usage:

php artisan make:seeder BooksTableSeeder

Parameters: none.


5. make:request

Create a new form request class in app/Http/Requests folder.

Example usage:

php artisan make:request StoreBlogPost

Parameters: none.


6. make:middleware

Create a new middleware class.

Example usage:

php artisan make:middleware CheckAge

Parameters: none.


7. make:policy

Create a new policy class.

Example usage:

php artisan make:policy PostPolicy

Parameters:

--model=Photo

The model that the policy applies to.


8. make:command

Create a new Artisan command.

Example usage:

php artisan make:command SendEmails

Parameters:

--command=Command

The terminal command that should be assigned.


9. make:event

Create a new event class.

Example usage:

php artisan make:event OrderShipped

Parameters: none.


10. make:job

Create a new job class.

Example usage:

php artisan make:job SendReminderEmail

Parameters:

--sync

Indicates that job should be synchronous.


11. make:listener

Create a new event listener class.

Example usage:

php artisan make:listener SendShipmentNotification 

Parameters:

--event=Event

The event class being listened for.

--queued

Indicates the event listener should be queued.


12. make:mail

Create a new email class.

Example usage:

php artisan make:mail OrderShipped

Parameters:

--markdown

Create a new Markdown template for the mailable.

--force

Create the class even if the mailable already exists.


13. make:notification

Create a new notification class.

Example usage:

php artisan make:notification InvoicePaid

Parameters:

--markdown

Create a new Markdown template for the notification.

--force

Create the class even if the notification already exists.


14. make:provider

Create a new service provider class.

Example usage:

php artisan make:provider DuskServiceProvider

Parameters: none.


15. make:test

Create a new test class.

Example usage:

php artisan make:test UserTest

Parameters:

--unit

Create a unit (or, otherwise, feature) test.


16. make:channel

Create a new channel class for broadcasting.

Example usage:

php artisan make:channel OrderChannel

Parameters: none.


17. make:exception

Create a new custom exception class.

Example usage:

php artisan make:exception UserNotFoundException

Parameters:

--render

Create the exception with an empty render method.

--report

Create the exception with an empty report method.


18. make:factory

Create a new model factory.

Example usage:

php artisan make:factory PostFactory --model=Post

Parameters:

--model=Post

The name of the model.


19. make:observer

Create a new observer class.

Example usage:

php artisan make:observer PostObserver --model=Post

Parameters:

--model=Post

The model that the observer applies to.


20. make:rule

Create a new validation rule.

Example usage:

php artisan make:rule Uppercase

Parameters: none.


21. make:resource

Create a new API resource.

Example usage:

php artisan make:resource PostResource

Parameters:

--collection=Post

Create a ResourceCollection instead of individual Resource class.


So, that’s it – 21 commands covered. Is there anything missing? Or would you like to see some new parameters for your favorite commands? Share in the comments!