laravel中artisan工具(命令)的使用详解
- artisan工具,首先,这个是一个php文件,它放在我们laravel框架的根目录
Artisan工具简介
Artisan 是 Laravel 中自带的命令行工具的名称。它提供了一些对您的应用开发有帮助的命令。它是由强大的 Symfony Console 组件驱动的。为了查看所有可用的 Artisan 的命令,您可以使用 list 命令来列出它们:
在脚本中执行php artisan list
可以查看所有的命令
那么熟悉linux的知道,不管什么命令都有一个help命令,当运行的时候,忽然之间,忘了的话,可以执行help命令去查看一下我们需要的命令,同样的在laravel框架中也可以去执行help命令去查看如: php artisan help migrate
利用artisan工具创建控制器
了解tp框架的同学,能知道,如果去创建一个控制器,需要自己去手写,命名空间,继承类等
那么在laravel中,还可以利用artisan工具去执行,如创建一个MsgController php artisan make:controller MsgController
执行之后,’app\http\Controllers’会多出一个MsgController,并且也准备好了方法增,删,改,查,等如果不需要那怎么办呢?很简单,一是直接删除,二利用命令生成空白的控制器如: php artisan make:controller --plain
但是,有的同学会遇到这种情况,如,一个项目分前台和后台,相应的控制器也需要放置在不同的目录下,这种怎么处理呢,如果用artisan工具?比如创建一个Admin\GoodsController
php artisan make:controller Admin\GoodsController
前提是在laravel项目中的App\Http\Controllers下已创建Admin文件夹,执行之后会发现,admin下多出GoodsController的文件,打开,发现命名空间也自动整理好;
这条命令指示,验证了laravel框架的灵活性,开发者可以随意的去指定;
利用artisan工具创建model
作为程序员,开发项目的同时,我们需要去操作数据库,那么肯定就与model有关系,那么如何使用artisan工具去创建一个model呢?和控制器,大同小异,比如创建一个Msg的model
php artisan make:model Msg
在laravel中,它默认是放在App目录下,那如果想要定义自己的文件夹呢和控制器也是一样的我们指定它的目录即可,不过要注意的是把命名空间需要改变一下
利用artisan工具查看路由
在laravel框架中,如果想要在浏览器中去响应控制器中的方法,那么只需要,在App\routes.php中去指定路由即可,但是如果我们使用资源路由,只需指定一条路由即可,并且,它也直接生成好多方法,但我们是看不到的,那么怎么办呢? php artisan route:list
利用这条命令可以查看所有的路由
利用artisan工具创建中间件
首先在laravel中,中间件也是一个非常方便的东西,那么中间件是什么呢?
简单的理解就是,中间件可以放到我们的控制器的方法前或后去执行,来影响执行的结果.
用过,laravel框架做过项目的都知道,每当post提交的时候,都会报一个Token的错误,解决办法是加个
{!!csrf_field()!!}即可,但是根本原因在哪里呢?
在app\http\middleware\VerifyCsrfToken.php
的问题,把这个中间件发在全局上,每当去post的提交的时候就会验证;
如何去生成一个中间件呢?
php artisan make:middleware EmailMiddleware
执行会在,middleware 文件夹下找到
=================================分割线================================
php artisan
php artisan list
php artisan help make:model
php artisan --version
php artisan serve
php artisan key:generate
php artisan make:auth
php artisan down
php artisan up
php artisan tinker
php artisan route:list
php artisan route:cache
- php artisan route:clear
功能篇
php artisan make:controller StudentController
php artisan make:controllerPhotoController--resource
php artisan make:model Student
php artisan make:migration create_users_table--create=students//创建students表
php artisan make:migration add_votes_to_users_table--table=students//给students表增加votes字段
php artisan migrate
php artisan make:modelStudent-m
php artisan migrate:rollback
php artisan migrate:reset
php artisan make:seeder StudentTableSeeder
php artisan db:seed--class=StudentTableSeeder
php artisan db:seed
php artisan make:middlewareActivity
php artisan queue:table
php artisan make:jobSendEmail
php artisan make:request CreateArticleRequest
=================================分割线================================
1、控制器 or Model
-
// 5.2版本创建一个空控制器
-
php artisan make:controller BlogController
-
// 创建Rest风格资源控制器
-
php artisan make:controller PhotoController --resource
-
// 指定创建位置 在app目录下创建TestController
-
php artisan make:controller App\TestController
-
// 指定路径创建
-
php artisan make:Model App\\Models\\User(linux or macOs 加上转义符)
-
// 数据迁移
-
php artisan migrate
2、数据迁移(Migration)
-
// 创建迁移
-
php artisan make:migration create_users_table
-
// 指定路径
-
php artisan make:migration --path=app\providers create_users_table
-
// 一次性创建
-
// 下述命令会做两件事情:
-
// 在 app 目录下创建模型类 App\Post
-
// 创建用于创建 posts 表的迁移,该迁移文件位于 database/migrations 目录下。
-
php artisan make:model --migration Post
3、数据填充(Seeder)
-
// 创建要填充的数据类
-
php artisan make:seeder UsersTableSeeder
-
// 数据填充(全部表)
-
php artisan db: seed
-
// 指定要填充的表
-
php artisan db: seed -- class=UsersTableSeeder
4、路由
-
// 查看所有路由
-
php artisan route: list
5、tinker命令插入单条数据
-
E:\opensource\blog>php artisan tinker
-
Psy Shell v0 .7 .2 (PHP 5.6 .19 鈥?cli) by Justin Hileman
-
>>> $user = new App\User;
-
=> App\User { #628}
-
>>> $user->name = 'admin'
-
=> "admin"
-
>>> $user->email = 'fation@126.com'
-
=> "fation@126.com"
-
>>> $user->password = bcrypt( '123456');
-
=> "$2y$10$kyCuwqSpzGTTZgAPMgCDgung9miGRygyCAIKHJhylYyW9osKKc3lu"
-
>>> $user->save();
-
"insert into `users` (`name`, `email`, `password`, `updated_at`, `created_at`) v
-
alues (?, ?, ?, ?, ?)"
-
=> true
-
>>> exit
-
Exit: Goodbye.
6、Request请求,主要用于表单验证
php artisan make:request TagCreateRequest
创建的类存放在 app/Http/Requests 目录下
-
-
-
namespace App\ Http\ Requests;
-
-
use App\ Http\ Requests\ Request;
-
-
class TagCreateRequest extends Request
-
{
-
-
/**
-
* Determine if the user is authorized to make this request.
-
*
-
* @return bool
-
*/
-
public function authorize()
-
{
-
return true;
-
}
-
-
/**
-
* Get the validation rules that apply to the request.
-
*
-
* @return array
-
*/
-
public function rules()
-
{
-
return [
-
'tag' => 'required|unique:tags,tag',
-
'title' => 'required',
-
'subtitle' => 'required',
-
'layout' => 'required',
-
];
-
}
-
}
使用时只需在对应的Controller方法里引入
-
// 注意这里使用的是TagCreateRequest
-
public function store(TagCreateRequest $request)
-
{
-
$tag = new Tag();
-
foreach (array_keys( $this->fields) as $field) {
-
$tag->$field = $request->get($field);
-
}
-
$tag->save();
-
return redirect( '/admin/tag')
-
->withSuccess( "The tag '$tag->tag' was created.");
-
}
7、 创建artisan命令行(laravel5.*版本)
-
// 以下命令生成文件 app/Console/Commands/TopicMakeExcerptCommand.php
-
-
php artisan make:console TopicMakeExcerptCommand --command=topics:excerpt
-
/ /在 app/ Console/ Kernel.php 文件里面, 添加以下
-
protected $commands = [
-
\ App\ Console\ Commands\ TopicMakeExcerptCommand:: class,
-
];
-
//激活artisan命令行。
//在生成的TopicMakeExcerptCommand.php 文件, 修改以下区域
-
-
-
namespace App\ Console\ Commands;
-
-
use Illuminate\ Console\ Command;
-
-
class TopicMakeExcerptCommand extends Command
-
{
-
/**
-
* 1. 这里是命令行调用的名字, 如这里的: `topics:excerpt`,
-
* 命令行调用的时候就是 `php artisan topics:excerpt`
-
*
-
* @var string
-
*/
-
protected $signature = 'topics:excerpt';
-
-
/**
-
* 2. 这里填写命令行的描述, 当执行 `php artisan` 时
-
* 可以看得见.
-
*
-
* @var string
-
*/
-
protected $description = '这里修改为命令行的描述';
-
-
/**
-
* Create a new command instance.
-
*
-
* @return void
-
*/
-
public function __construct()
-
{
-
parent::__construct();
-
}
-
-
/**
-
* 3. 这里是放要执行的代码, 如在我这个例子里面,
-
* 生成摘要, 并保持.
-
*
-
* @return mixed
-
*/
-
public function handle()
-
{
-
$topics = Topic::all();
-
$transfer_count = 0;
-
-
foreach ($topics as $topic) {
-
if ( empty($topic->excerpt))
-
{
-
$topic->excerpt = Topic::makeExcerpt($topic->body);
-
$topic->save();
-
$transfer_count++;
-
}
-
}
-
$this->info( "Transfer old data count: " . $transfer_count);
-
$this->info( "It's Done, have a good day.");
-
}
-
}
-
// 命令行调用
-
php artisan topics:excerpt
========================分割线====================================
artisan 命令列表一
- php artisan –help:显示帮助命令的使用格式,同 php artisan help
- php artisan –version:显示当前使用的 Laravel 版本
- php artisan changes:列出当前版本相对于上一版本的主要变化
- php artisan down:将站点设为维护状态
- php artisan up:将站点设回可访问状态
- php artisan optimize:优化应用程序性能,生成自动加载文件,且产生聚合编译文件 bootstrap/compiled.php
- php artisan dump-autoload:重新生成框架的自动加载文件,相当于 optimize 的再操作
- php artisan clear-compiled:清除编译生成的文件,相当于 optimize 的反操作
- php artisan migrate:执行数据迁移
- php artisan routes:列出当前应用全部的路由规则
- php artisan serve:使用 PHP 内置的开发服务器启动应用 【要求 PHP 版本在 5.4 或以上】
- php artisan tinker:进入与当前应用环境绑定的 REPL 环境,相当于 Rails 框架的 rails console 命令
- php artisan workbench 组织名/包名:这将在应用根目录产生一个名为 workbench 的文件夹,然后按 组织名/包名 的形式生成一个符合 Composer 标准的包结构,并自动安装必要的依赖【需要首先完善好 app/config/workbench.php 文件的内容】
- php artisan cache:clear:清除应用程序缓存
- php artisan command:make 命令名:在 app/commands 目录下生成一个名为 命令名.php 的自定义命令文件
- php artisan controller:make 控制器名:在 app/controllers 目录下生成一个名为 控制器名.php 的控制器文件
- php artisan db:seed:对数据库填充种子数据,以用于测试
- php artisan key:generate:生成一个随机的 key,并自动更新到 app/config/app.ph 的 key 键值对
- php artisan migrate:install:初始化迁移数据表
- php artisan migrate:make 迁移名:这将在 app/database/migrations 目录下生成一个名为 时间+迁移名.php 的数据迁移文件,并自动执行一次 php artisan dump-autoload 命令
- php artisan migrate:refresh:重置并重新执行所有的数据迁移
- php artisan migrate:reset:回滚所有的数据迁移
- php artisan migrate:rollback:回滚最近一次数据迁移
- php artisan session:table:生成一个用于 session 的数据迁移文件
artisan 命令列表二
- Laravel Framework version 5.3.28
- Usage:
- command [options] [arguments]
- Options:
- -h, --help 显示帮助信息
- -q, --quiet 不要输出任何信息
- -V, --version 显示当前应用版本
- --ansi 强制 ANSI 输出
- --no-ansi 关闭 ANSI 输出
- -n, --no-interaction 不要询问任何交互问题
- --env[=ENV] 在当前环境下运行命令
- -v|vv|vvv, --verbose 升级详细信息: 1 正常输出, 2 更多详细信息 3 调试使用
- 可用的命令:
- clear-compiled 移除编译类文件
- down 将应用程序置于维护模式
- env 显示当前框架的环境 比如 local
- help 显示一个命令的帮助信息 比如 php artisan help make:controller
- inspire 显示一个灌输的引用(inspiring quote)
- list 列出所有命令
- migrate 运行数据库迁移
- optimize 优化框架以获得更好的性能
- serve 在PHP开发服务器上提供应用程序
- tinker 与您的应用程序交互
- up 使应用程序退出维护模式
- app
- app:name 设置应用命名空间
- auth
- auth:clear-resets 刷新过期密码重置令牌
- cache
- cache:clear 刷新应用程序缓存
- cache:table 为缓存数据库表创建迁移
- config
- config:cache 创建缓存文件以加快配置加载
- config:clear 删除配置缓存文件
- db
- db:seed Seed the database with records
- event
- event:generate 基于注册生成缺少的事件和侦听器
- key
- key:generate 设置应用key
- make
- make:auth 搭建基本的登录和注册的视图和路由
- make:command 创建一个新的 Artisan 命令
- make:controller 创建一个新的 controller 类
- make:event 创建一个新的 event 类
- make:job 创建一个新的 job 类
- make:listener 创建一个新的 event listener 类
- make:mail 创建一个新的 email 类
- make:middleware 创建一个新的 middleware 类
- make:migration 创建一个新的 migration 文件
- make:model 创建一个新的 Eloquent model 类
- make:notification 创建一个新的 notification 类
- make:policy 创建一个新的 policy 类
- make:provider 创建一个新的 service provider 类
- make:request 创建一个新的 form request 类
- make:seeder 创建一个新的 seeder 类
- make:test 创建一个新的 test 类
- migrate
- migrate:install 创建迁移存储库
- migrate:refresh 重置并重新运行所有迁移
- migrate:reset 回滚所有数据库迁移
- migrate:rollback 回滚上次数据库迁移
- migrate:status 显示每个迁移的状态
- notifications
- notifications:table 为通知表创建迁移
- queue
- queue:failed 列出所有失败的队列作业s
- queue:failed-table 为失败的队列作业数据库表创建迁移
- queue:flush 清除所有失败的队列作业
- queue:forget 删除失败的队列作业
- queue:listen 监听一个给定的队列
- queue:restart 在其当前作业之后重新启动队列worker守护程序
- queue:retry 重试一个失败的队列任务
- queue:table 为队列作业数据库表创建迁移
- queue:work 开始作为守护程序在队列上处理作业
- route
- route:cache 创建路由缓存文件用于更快的路由注册
- route:clear 删除路由缓存文件
- route:list 列出所有注册的路由
- schedule
- schedule:run 运行已调度的命令
- session
- session:table 为会话数据库表创建迁移
- storage
- storage:link 创建符号链接 从 "public/storage" 到 "storage/app/public"
- vendor
- vendor:publish 从供应商包发布任何可发布的资产
- view
- view:clear 清除所有编译的视图文件
artisan 命令使用不知道的,可以使用如下命令查看帮助信息
- php artisan help 命令
比如查看 make:controller 如何使用
- wujiangwei:laravel wu$ php artisan help make:controller
- Usage:
- make:controller [options] [--] <name>
- Arguments:
- name The name of the class
- Options:
- -m, --model[=MODEL] Generate a resource controller for the given model.
- -r, --resource Generate a resource controller class.
- -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
- Help:
- Create a new controller class