You know make:model exists. You know there are flags that generate a migration, a controller, a factory, and a seeder all at once. You just cannot remember the exact combination without opening a browser tab.
This is one of those small frictions that adds up. You stop mid-flow, Google “laravel make model with migration and controller,” scan the docs, paste the command, and get back to work. Two minutes gone. Flow broken. Multiply that by ten commands a day and it is a real cost.
In 2026, that friction is unnecessary. Here is every Artisan command worth knowing, what the flags actually do, and how AI can now generate the right command sequence for you automatically based on what you are building.
Why Artisan flags are so easy to forget
The problem is not intelligence. The problem is surface area.
Laravel’s Artisan CLI has over 100 built-in commands, and many of them have flags that interact with each other in ways that are not obvious until you have used them enough times to memorize them. A junior or mid-level developer who switches between projects, frameworks, and contexts does not always have that repetition.
make:model Post generates a model. make:model Post -m generates a model and a migration. make:model Post -mc generates a model, migration, and controller. make:model Post -mcrf generates a model, migration, controller, resource, and factory. make:model Post --all generates all of the above plus a seeder and a policy.
None of that is hard to understand once you see it. It is just hard to hold in memory when you are focused on the feature you are building, not the commands that scaffold it.
Artisan commands developers Google most often
These are the commands with flag combinations that cause the most tab-switching.
make:model
The most used Artisan command and the one with the most useful flag combinations.
Model only
php artisan make:model Post
Model + migration
php artisan make:model Post -m
Model + migration + controller
php artisan make:model Post -mc
Model + migration + resource controller
php artisan make:model Post -mcr
Model + migration + API controller (no create/edit methods)
php artisan make:model Post –migration –controller –api
Model + migration + controller + factory + seeder
php artisan make:model Post -mcfs
Everything at once
php artisan make:model Post –all
The --all flag is the one most developers do not know about until someone tells them. It generates the model, migration, factory, seeder, policy, resource controller, and resource class in one command.
make:controller
Basic controller
php artisan make:controller PostController
Resource controller (index, create, store, show, edit, update, destroy)
php artisan make:controller PostController –resource
API resource controller (no create or edit — no form views needed)
php artisan make:controller PostController –api
Invokable controller (single-action, uses __invoke)
php artisan make:controller PostController –invokable
Resource controller bound to a model (type-hints the model automatically)
php artisan make:controller PostController –resource –model=Post
The --invokable flag is the one people reach for on single-action routes and then forget the exact flag name. The --model flag on a resource controller is even more overlooked and saves meaningful boilerplate.
make:migration
Create a new table
php artisan make:migration create_posts_table
Add a column to an existing table
php artisan make:migration add_published_at_to_posts_table
Modify an existing table
php artisan make:migration modify_posts_table
Specify the table explicitly
php artisan make:migration create_posts_table –create=posts
Modify with explicit table
php artisan make:migration add_status_to_posts –table=posts
Laravel infers intent from the migration name when you follow the naming convention, which is why create_posts_table generates a migration with a create schema call and add_column_to_table generates one with an alter call.
make:request
Form request for validation
php artisan make:request StorePostRequest
php artisan make:request UpdatePostRequest
No flags here, but developers often forget that the convention is StoreModelRequest and UpdateModelRequest to keep naming predictable across a team.
make:policy
Policy without a model
php artisan make:policy PostPolicy
Policy with model methods pre-generated (viewAny, view, create, update, delete, restore, forceDelete)
php artisan make:policy PostPolicy –model=Post
The --model flag generates all the policy methods with the correct model type-hint already in place. Without it, you get an empty class. Most developers want the pre-generated methods and forget to add the flag.
make:resource
API resource (single model)
php artisan make:resource PostResource
Resource collection
php artisan make:resource PostCollection –collection
make:job
Synchronous job
php artisan make:job ProcessPost
Job forced to be synchronous (does not implement ShouldQueue)
php artisan make:job ProcessPost –sync
make:event and make:listener
php artisan make:event PostPublished
php artisan make:listener SendPublicationNotification –event=PostPublished
The --event flag wires the listener to the event automatically. Without it, you add the event type-hint manually.
make:mail
php artisan make:mail PostPublished
php artisan make:mail PostPublished –markdown=emails.post-published
The --markdown flag generates a mailable class with a markdown view already configured. Without it, you get the class and have to set up the view reference yourself.
make:notification
php artisan make:notification PostApproved
php artisan make:notification PostApproved –markdown=notifications.post-approved
make:test
Feature test (default, goes in tests/Feature)
php artisan make:test PostTest
Unit test (goes in tests/Unit)
php artisan make:test PostTest –unit
Pest test
php artisan make:test PostTest –pest
Pest unit test
php artisan make:test PostTest –pest –unit
make:middleware
php artisan make:middleware EnsurePostIsPublished
make:command
php artisan make:command PublishScheduledPosts
Ready to Code Smarter with Laravel?
Meet LaraCopilot — your AI full-stack assistant built for Laravel developers.
Skip the boilerplate, build faster, and focus on what matters: problem solving.
Flag combinations most developers always Google
For quick reference, these are the ten combinations that cause the most tab-switching.
| Goal | Command |
|---|---|
| Model + migration + resource controller | make:model Post -mcr |
| Model + everything | make:model Post --all |
| API controller with model binding | make:controller PostController --api --model=Post |
| Single-action controller | make:controller PostController --invokable |
| Policy with all model methods | make:policy PostPolicy --model=Post |
| Listener wired to an event | make:listener SendNotification --event=PostPublished |
| Mailable with markdown view | make:mail PostPublished --markdown=emails.post-published |
| Pest feature test | make:test PostTest --pest |
| Add column migration | make:migration add_status_to_posts --table=posts |
| Resource collection | make:resource PostCollection --collection |
Where AI makes this better
Knowing the flags is useful. But even if you bookmark this page, you still have to translate “I want to build a Post feature with a model, migration, resource controller, policy, API resource, and Pest tests” into the right sequence of commands manually.
That translation step is where most of the friction actually lives. It is not that the commands are hard. It is that going from “here is what I am building” to “here is the exact sequence of commands that scaffolds it correctly” requires a mental context-switch that interrupts the real work.
LaraCopilot handles that translation automatically. Describe what you are building, and it generates the full connected scaffold directly, with all the right pieces wired together from the start. Not a list of commands to run one by one, but a complete, framework-correct stack pushed to your repository in one session.
For junior and mid-level developers in particular, that shift matters beyond the time saved. When a tool generates code that follows correct Laravel conventions from the first generation, the developer reads framework-correct code every day. That is how conventions become instinctive rather than something you have to look up.
Artisan commands for running, not just generating
Beyond make: commands, these are the ones developers look up most often during active development.
Run migrations
php artisan migrate
Roll back the last migration batch
php artisan migrate:rollback
Roll back and re-run all migrations
php artisan migrate:fresh
Roll back, re-run migrations, and seed
php artisan migrate:fresh –seed
Run a specific seeder
php artisan db:seed –class=PostSeeder
Clear all caches
php artisan optimize:clear
Clear config cache only
php artisan config:clear
Clear route cache
php artisan route:clear
List all routes
php artisan route:list
List routes filtered by name
php artisan route:list –name=post
Run the development server
php artisan serve
Open a Tinker REPL session
php artisan tinker
A note on php artisan list and php artisan help
If you are ever unsure about a command, two built-in commands are worth knowing.
php artisan list shows every available command grouped by category.
php artisan help make:model shows the full documentation for a specific command, including every available flag and what it does.
These are always current for your installed Laravel version, which matters when behavior changes between major releases.
Ready to Code Smarter with Laravel?
Meet LaraCopilot — your AI full-stack assistant built for Laravel developers.
Skip the boilerplate, build faster, and focus on what matters: problem solving.
Stop Googling, start building
The commands are not the hard part of Laravel development. The features are. Every minute spent looking up flag combinations is a minute not spent on the work that actually requires your thinking.
Bookmark this page for the reference. And when you are ready to stop scaffolding by hand entirely and generate the full connected stack from a single description of what you are building, LaraCopilot is built exactly for that.