Create model with resourceful controller - laravel

I know I can create a model with controller by using the command php artisan make:model Task -cand I also can create a resourceful controller with php artisan make:controller TasksController -r. Is there a way to create both a model with a resourceful controller?

Yes, you can do this without using packages. If you run php artisan make:model --help you will find the options that you can add to the command.
php artisan make:model --help
Options:
-c, --controller Create a new controller for the model.
-r, --resource Indicated if the generated controller should be a resource controller
So if you run it with both the c and the r flag, it will generate the model, along with a resource controller:
php artisan make:model Task -c -r
Note: this works for versions >=5.3!

You may want to look at a generator package.
https://github.com/amranidev/scaffold-interface
https://github.com/InfyOmLabs/laravel-generator

I suggest a simple method which 100% works for me in laravel 7
php artisan make:model ModelName -mr
This command will create a new model with resourceful controller as well as with migration
-m denotes for migrations
-r creates resourceful controller and associate it with model
hope this is usefull for you

example
php artisan make:model Product -c
-a, --all Generate a migration, seeder, factory, and resource controller for the model
-c, --controller Create a new controller for the model
-f, --factory Create a new factory for the model
--force Create the class even if the model already exists
-m, --migration Create a new migration file for the model
-s, --seed Create a new seeder file for the model
-p, --pivot Indicates if the generated model should be a custom intermediate table model
-r, --resource Indicates if the generated controller should be a resource controller
--api Indicates if the generated controller should be an API controller
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--env[=ENV] The environment the command should run under
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Related

What flags can I use to add methods to controller in artisan:make controller?

I am curious about the php artisan make:contorller myController command. I am using Laravel 5.7.* and I know that we can add flags to that command, but I do not know what are those flags; for example, a flag to add all CRUD methods. How many flags are for this make:controller command? What are those flags? All of the flags works for all the laravel versions (version 5)?
php artisan help make:controller ... enjoy
You can use following flags:
--all -a Generate a migration, factory, and resource controller for the model.
--controller -c Create a new controller for the model.
--factory -f Create a new factory for the model.
--force Create the class even if the model already exists.
--migration -m Create a new migration file for the model.
--pivot -p Indicates if the generated model should be a custom intermediate table model.
--resource -r Indicates if the generated controller should be a resource controller.

Laravel delete model, controller and migration in single artisan command?

As the title says; is there a way to delete/revert/rollback the creation of the files created when running php artisan make:model MyModel -mcr?
Something like:
php artisan destroy:model MyModel
.. and it "cascade" delete all related files?
Just do it manually, no command as of this writing
Delete the model first (if you don't) need the model any longer
Delete the migration from ...database/migrations folder
If you have already migrated i.e if you have already run php artisan migrate, log into your phpmyadmin or SQL(whichever the case is) and in your database, delete the table created by the migration
Still within your database, in the migrations folder, locate the row with that migration file name and delete the row.
Works for me, hope it helps!
When you run
php artisan make:model --help
command you must be see
Usage:
make:model [options] [--] <name>
Arguments:
name The name of the class
Options:
-a, --all Generate a migration, factory, and resource controller for the model
-c, --controller Create a new controller for the model
-f, --factory Create a new factory for the model
--force Create the class even if the model already exists
-m, --migration Create a new migration file for the model
-p, --pivot Indicates if the generated model should be a custom intermediate table model
-r, --resource Indicates if the generated controller should be a resource controller
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--env[=ENV] The environment the command should run under
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose outp
ut and 3 for debug
That mean dy default it is not poosible. You must be make your own artisan command for it. Also if you want know about artisan command options and arguments use
php artisan command_name --help

Is there a way of set the name of the controller differently when using the -c option for making a model?

When doing php artisan make:model Post -mc the resulted naming convention will be:
model: Post
migration file: ...create_posts_table
controller: PostController
Is there a way of setting the name of the controller to PostsController (plural) when doing the artisan command?

Laravel - create model, controller and migration in single artisan command

I can create a model and resource controller (binded to model) with the following command
php artisan make:controller TodoController --resource --model=Todo
I want to also create a migration with the above command, is it possible?
You can do it if you start from the model
php artisan make:model Todo -mcr
if you run php artisan make:model --help you can see all the available options
-m, --migration Create a new migration file for the model.
-c, --controller Create a new controller for the model.
-r, --resource Indicates if the generated controller should be a resource controller
Update
As mentioned in the comments by #arun in newer versions of laravel > 5.6 it is possible to run following command:
php artisan make:model Todo -a
-a, --all Generate a migration, factory, and resource
controller for the model
Updated
Laravel 6 or Later
Through the model
To Generate a migration, seeder, factory and resource controller for the model
php artisan make:model Todo -a
Or
php artisan make:model Todo -all
Other Options
-c, --controller Create a new controller for the model
-f, --factory Create a new factory for the model
--force Create the class even if the model already exists
-m, --migration Create a new migration file for the model
-s, --seed Create a new seeder file for the model
-p, --pivot Indicates if the generated model should be a custom intermediate table model
-r, --resource Indicates if the generated controller should be a resource controller
For More Help
php artisan make:model Todo -help
Hope Newbies will get help.
You can do it with the following command:
php artisan make:model post -mcr
Brief :
-m, to create migration
-c to create controller
-r to specify the controller has resource
You can make model + migration + controller, all in one line, using this command:
php artisan make:model --migration --controller test
Short version: php artisan make:model -mc test
Output :-
Model created successfully.
Created Migration:2018_03_10_002331_create_tests_table
Controller created successfully.
If you need to perform all CRUD operations in the controller then use this command:
php artisan make:model --migration --controller test --resource
Short version: php artisan make:model -mc test --resource
php artisan make:model PurchaseRequest -crm
The Result is
Model created successfully.
Created Migration: 2018_11_11_011541_create_purchase_requests_table
Controller created successfully.
Just use -crm instead of -mcr
php artisan make:model Author -cfmsr
-c, --controller Create a new controller for the model
-f, --factory Create a new factory for the model
-m, --migration Create a new migration file for the model
-s, --seed Create a new seeder file for the model
-r, --resource Indicates if the generated controller should be a resource controller
Laravel 5.4 You can use
php artisan make:model --migration --controller --resource Test
This will create
1) Model
2) controller with default resource function
3) Migration file
And Got Answer
Model created successfully.
Created Migration: 2018_04_30_055346_create_tests_table
Controller created successfully.
We can use php artisan make:model Todo -a to create model, migration, resource controller and factory
You don't need to add --resource flag just type the following and laravel will create the whole desired resources
php artisan make:controller TodoController --model=todo
Instead of using long command like
php artisan make:model <Model Name> --migration --controller --resource
for make migration, model and controller, you may use even shorter as -mcr.
php artisan make:model <Model Name> -mcr
For more MOST USEFUL LARAVEL ARTISAN MAKE COMMANDS LISTS
If you are using Laravel as an only API add --api option:
php artisan make:model Post -a --api
To make mode, controllers with resources, You can type CMD as follows :
php artisan make:model Todo -mcr
or you can check by typing
php artisan help make:model
where you can get all the ideas
You can use -m -c -r to make migration, model and controller.
php artisan make:model Post -m -c -r
To make all 3: Model, Controller & Migration Schema of table
write in your console: php artisan make:model NameOfYourModel -mcr
How I was doing it until now:
php artisan make:model Customer
php artisan make:controller CustomersController --resource
Apparently, there’s a quicker way:
php artisan make:controller CustomersController --model=Customer
php artisan make:model modelname -mcr
to create model. Here -mcr stands for migrations components and resourses

How to use artisan to make views in laravel 5.1

I have been looking in the docs for a solution to make views with basic CURD operations but without much success.
I guess this might be pretty simple, but am missing something or not looking hard enough.
i can make models and controllers using the below artisan commands
php artisan make:model modelName
php artisan make:controller controllerName
But how do we make the basic CURD views. something like
php artisan make:views
cant find any doc for this. Please help
At the time of writing, there isn't a way to create views via artisan without writing your own command or using a third party package. You could write your own as already suggested or use sven/artisan-view.
if you are using laravel 5.1 or 5.2 this gist can help you make:view command just create command copy and paste the code from gist.
Step 1:
php artisan make:command MakeViewCommand
Step 2:
copy class from this gist
https://gist.github.com/umefarooq/ebc617dbf88260db1448
Laravel officially doesn't have any Artisan cammands for views.
But you could add third party plugins like Artisan View
Here's the link Artisan View
After adding this plugin to your project by the guide provided here you should be able to perform following cammands :
Create a view 'index.blade.php' in the default directory
$ php artisan make:view index
Create a view 'index.blade.php' in a subdirectory ('pages')
$ php artisan make:view pages.index
Create a view with a different file extension ('index.html')
$ php artisan make:view index --extension=html
There is very easy way to create a view(blade) file with php artisan make:view {view-name} command using Laravel More Command Package.
First Install Laravel More Command
composer require theanik/laravel-more-command --dev
Then Run
php artisan make:view {view-name}
For example
It create index.blade.php in resource/views directory
php artisan make:view index
It create index.blade.php in resource/views/user directory
php artisan make:view user/index
Thank you.
In v5.4 you need to create the command with:
php artisan make:command MakeView
and before you can use it, it must be registered in App/Console/Kernel like
protected $commands = [
Commands\MakeView::class
];
then you make a view like: php artisan make:view posts/create
To create a view (blade) file through command in laravel 8:
composer require theanik/laravel-more-command --dev
php artisan make:view abc.blade.php
You can install sven/artisan-view package to make view from CMD, to install package write this command:
composer require sven/artisan-view --dev
After installing it, you can make a single view or folder with all views that contain {index-create-update-show}
To make a single file we using this command:
php artisan make:view Name_of_view
For example
php artisan make:view index
To make a folder that contain all resources index - create - update - show write name of folder that contain all this files for example:
php artisan make:view Name_of_Folder -r
For example:
php artisan make:view blog -r
-r is a shorthand for --resource you can write full name or shorthand to make resource.
you can extend yields from master page if master page inside in directory layouts we write command sith this format
php artisan make:view index --extends=layouts.master --with-yields
layouts is a directory this directory may be with a different name in your project the idea is name_of_folder/master_page that you want to extend yields from it.
For more view docs

Resources