// 在版本 5.1.11 新添加,见 http://d.laravel-china.org/docs/5.1/authorization#creating-policiesphp artisan make:policy PostPolicy
// 针对命令显示帮助信息php artisan --help OR -h
// 抑制输出信息php artisan --quiet OR -q
// 打印 Laravel 的版本信息php artisan --version OR -V
// 不询问任何交互性的问题php artisan --no-interaction OR -n
// 强制输出 ANSI 格式php artisan --ansi
// 禁止输出 ANSI 格式php artisan --no-ansi
// 显示当前命令行运行的环境php artisan --env
// -v|vv|vvv 通过增加 v 的个数来控制命令行输出内容的详尽情况: 1 个代表正常输出, 2 个代表输出更多消息, 3 个代表调试php artisan --verbose
// 移除编译优化过的文件 (storage/frameworks/compiled.php)php artisan clear-compiled
// 显示当前框架运行的环境php artisan env// 显示某个命令的帮助信息php artisan help// 显示所有可用的命令php artisan list// 进入应用交互模式php artisan tinker// 进入维护模式php artisan down// 退出维护模式php artisan up// 优化框架性能// --force 强制编译已写入文件 (storage/frameworks/compiled.php)// --psr 不对 Composer 的 dump-autoload 进行优化php artisan optimize [--force] [--psr]
// 启动内置服务器php artisan serve// 更改默认端口php artisan serve --port 8080
// 使其在本地服务器外也可正常工作php artisan serve --host 0.0.0.0
// 更改应用命名空间php artisan app:name namespace
// 清除过期的密码重置令牌php artisan auth:clear-resets
// 清空应用缓存php artisan cache:clear
// 创建缓存数据库表 migrationphp artisan cache:table
// 合并所有的配置信息为一个,提高加载速度php artisan config:cache
// 移除配置缓存文件php artisan config:clear
// 程序内部调用 Artisan 命令$exitCode = Artisan::call('config:cache');
// 运行所有的 seed 假数据生成类// --class 可以指定运行的类,默认是: "DatabaseSeeder"// --database 可以指定数据库// --force 当处于生产环境时强制执行操作php artisan db:seed [--class[="..."]] [--database[="..."]] [--force]
// 基于注册的信息,生成遗漏的 events 和 handlersphp artisan event:generate
// 生成新的处理器类// --command 需要处理器处理的命令类名字php artisan handler:command [--command="..."] name
// 创建一个新的时间处理器类// --event 需要处理器处理的事件类名字// --queued 需要处理器使用队列话处理的事件类名字php artisan handler:event [--event="..."] [--queued] name
// 生成应用的 key(会覆盖)php artisan key:generate
// 在默认情况下, 这将创建未加入队列的自处理命令// 通过 --handler 标识来生成一个处理器, 用 --queued 来使其入队列.php artisan make:command [--handler] [--queued] name
// 创建一个新的 Artisan 命令// --command 命令被调用的名称。 (默认为: "command:name")php artisan make:console [--command[="..."]] name
// 创建一个新的资源控制器// --plain 生成一个空白的控制器类php artisan make:controller [--plain] name
php artisan make:controller App\\Admin\\Http\\Controllers\\DashboardController
// 创建一个新的事件类php artisan make:event name
// 创建一个新的中间件类php artisan make:middleware name
// 创建一个新的迁移文件// --create 将被创建的数据表.// --table 将被迁移的数据表.php artisan make:migration [--create[="..."]] [--table[="..."]] name
// 创建一个新的 Eloquent 模型类php artisan make:model name
// 创建一个新的服务提供者类php artisan make:provider name
// 创建一个新的表单请求类php artisan make:request name
// 数据库迁移// --database 指定数据库连接(下同)// --force 当处于生产环境时强制执行,不询问(下同)// --path 指定单独迁移文件地址// --pretend 把将要运行的 SQL 语句打印出来(下同)// --seed Seed 任务是否需要被重新运行(下同)php artisan migrate [--database[="..."]] [--force] [--path[="..."]] [--pretend] [--seed]
// 创建迁移数据库表php artisan migrate:install [--database[="..."]]
// 重置并重新运行所有的 migrations// --seeder 指定主 Seeder 的类名php artisan migrate:refresh [--database[="..."]] [--force] [--seed] [--seeder[="..."]]
// 回滚所有的数据库迁移php artisan migrate:reset [--database[="..."]] [--force] [--pretend]
// 回滚最最近一次运行的迁移任务php artisan migrate:rollback [--database[="..."]] [--force] [--pretend]
// migrations 数据库表信息php artisan migrate:status
// 为队列数据库表创建一个新的迁移php artisan queue:table
// 监听指定的队列// --queue 被监听的队列// --delay 给执行失败的任务设置延时时间 (默认为零: 0)// --memory 内存限制大小,单位为 MB (默认为: 128)// --timeout 指定任务运行超时秒数 (默认为: 60)// --sleep 等待检查队列任务的秒数 (默认为: 3)// --tries 任务记录失败重试次数 (默认为: 0)php artisan queue:listen [--queue[="..."]] [--delay[="..."]] [--memory[="..."]] [--timeout[="..."]] [--sleep[="..."]] [--tries[="..."]] [connection]
// 查看所有执行失败的队列任务php artisan queue:failed
// 为执行失败的数据表任务创建一个迁移php artisan queue:failed-table
// 清除所有执行失败的队列任务php artisan queue:flush
// 删除一个执行失败的队列任务php artisan queue:forget
// 在当前的队列任务执行完毕后, 重启队列的守护进程php artisan queue:restart
// 对指定 id 的执行失败的队列任务进行重试(id: 失败队列任务的 ID)php artisan queue:retry id
// 指定订阅 Iron.io 队列的链接// queue: Iron.io 的队列名称.// url: 将被订阅的 URL.// --type 指定队列的推送类型.php artisan queue:subscribe [--type[="..."]] queue url
// 处理下一个队列任务// --queue 被监听的队列// --daemon 在后台模式运行// --delay 给执行失败的任务设置延时时间 (默认为零: 0)// --force 强制在「维护模式下」运行// --memory 内存限制大小,单位为 MB (默认为: 128)// --sleep 当没有任务处于有效状态时, 设置其进入休眠的秒数 (默认为: 3)// --tries 任务记录失败重试次数 (默认为: 0)php artisan queue:work [--queue[="..."]] [--daemon] [--delay[="..."]] [--force] [--memory[="..."]] [--sleep[="..."]] [--tries[="..."]] [connection]
// 生成路由缓存文件来提升路由效率php artisan route:cache
// 移除路由缓存文件php artisan route:clear
// 显示已注册过的路由php artisan route:list
// 运行计划命令php artisan schedule:run
// 为 session 数据表生成迁移文件php artisan session:table
// 从 vendor 的扩展包中发布任何可发布的资源// --force 重写所有已存在的文件// --provider 指定你想要发布资源文件的服务提供者// --tag 指定你想要发布标记资源.php artisan vendor:publish [--force] [--provider[="..."]] [--tag[="..."]]
php artisan tail [--path[="..."]] [--lines[="..."]] [connection]
composer create-project laravel/laravel folder_name
composer install
composer update
composer dump-autoload [--optimize]
composer self-update
composer require [options] [--] [vendor/packages]...
Config::get('app.timezone');
//指定默认值Config::get('app.timezone', 'UTC');
Config::set('database.default', 'sqlite');
Route::get('foo', function(){});
Route::get('foo', 'ControllerName@function');
Route::controller('foo', 'FooController');
资源路由
Route::resource('posts','PostsController');
// 资源路由器只允许指定动作通过Route::resource('photo', 'PhotoController',['only' => ['index', 'show']]);
Route::resource('photo', 'PhotoController',['except' => ['update', 'destroy']]);
触发错误
App::abort(404);
$handler->missing(...) in ErrorServiceProvider::boot();
throw new NotFoundHttpException;
路由参数
Route::get('foo/{bar}', function($bar){});
Route::get('foo/{bar?}', function($bar = 'bar'){});
HTTP 请求方式
Route::any('foo', function(){});
Route::post('foo', function(){});
Route::put('foo', function(){});
Route::patch('foo', function(){});
Route::delete('foo', function(){});
// RESTful 资源控制器Route::resource('foo', 'FooController');
// 为一个路由注册多种请求方式Route::match(['get', 'post'], '/', function(){});
安全路由 (TBD)
Route::get('foo', array('https', function(){}));
路由约束
Route::get('foo/{bar}', function($bar){})
->where('bar', '[0-9]+');
Route::get('foo/{bar}/{baz}', function($bar, $baz){})
->where(array('bar' => '[0-9]+', 'baz' => '[A-Za-z]'))
// 设置一个可跨路由使用的模式Route::pattern('bar', '[0-9]+')
HTTP 中间件
// 为路由指定 MiddlewareRoute::get('admin/profile', ['middleware' => 'auth', function(){}]);
Route::get('admin/profile', function(){})->middleware('auth');
命名路由
Route::currentRouteName();
Route::get('foo/bar', array('as' => 'foobar', function(){}));
Route::get('user/profile', [
'as' => 'profile', 'uses' => 'UserController@showProfile'
]);
Route::get('user/profile', 'UserController@showProfile')->name('profile');
$url = route('profile');
$redirect = redirect()->route('profile');
路由前缀
Route::group(['prefix' => 'admin'], function()
{
Route::get('users', function(){
return 'Matches The "/admin/users" URL';
});
});
路由命名空间
// 此路由组将会传送 'Foo\Bar' 命名空间Route::group(array('namespace' => 'Foo\Bar'), function(){})
子域名路由
// {sub} 将在闭包中被忽略Route::group(array('domain' => '{sub}.example.com'), function(){});
$environment = app()->environment();
$environment = App::environment();
$environment = $app->environment();
// 判断当环境是否为 localif ($app->environment('local')){}
// 判断当环境是否为 local 或 staging...if ($app->environment('local', 'staging')){}
// 记录器提供了 7 种在 RFC 5424 标准内定义的记录等级:// debug, info, notice, warning, error, critical, and alert.Log::info('info');
Log::info('info',array('context'=>'additional info'));
Log::error('error');
Log::warning('warning');
// 获取 monolog 实例Log::getMonolog();
// 添加监听器Log::listen(function($level, $message, $context) {});
记录 SQL 查询语句
// 开启 logDB::connection()->enableQueryLog();
// 获取已执行的查询数组DB::getQueryLog();
URL::full();
URL::current();
URL::previous();
URL::to('foo/bar', $parameters, $secure);
URL::action('NewsController@item', ['id'=>123]);
// 需要在适当的命名空间内URL::action('Auth\AuthController@logout');
URL::action('FooController@method', $parameters, $absolute);
URL::route('foo', $parameters, $absolute);
URL::secure('foo/bar', $parameters);
URL::asset('css/foo.css', $secure);
URL::secureAsset('css/foo.css');
URL::isValidUrl('http://example.com');
URL::getRequest();
URL::setRequest($request);
Event::fire('foo.bar', array($bar));
// 注册一个事件监听器.// void listen(string|array $events, mixed $listener, int $priority)Event::listen('App\Events\UserSignup', function($bar){});
Event::listen('foo.*', function($bar){});
Event::listen('foo.bar', 'FooHandler', 10);
Event::listen('foo.bar', 'BarHandler', 5);
// 你可以直接在处理逻辑中返回 false 来停止一个事件的传播.Event::listen('foor.bar', function($event){
return false; });
Event::subscribe('UserEventHandler');
基本使用
DB::connection('connection_name');
// 运行数据库查询语句$results = DB::select('select * from users where id = ?', [1]);
$results = DB::select('select * from users where id = :id', ['id' => 1]);
// 运行普通语句DB::statement('drop table users');
// 监听查询事件DB::listen(function($sql, $bindings, $time){
code_here; });
// 数据库事务处理DB::transaction(function()
{
DB::table('users')->update(['votes' => 1]);
DB::table('posts')->delete();
});
DB::beginTransaction();
DB::rollBack();
DB::commit();
查询语句构造器
// 取得数据表的所有行DB::table('name')->get();
// 取数据表的部分数据DB::table('users')->chunk(100, function($users)
{
foreach ($users as $user)
{
//}
});
// 取回数据表的第一条数据$user = DB::table('users')->where('name', 'John')->first();
DB::table('name')->first();
// 从单行中取出单列数据$name = DB::table('users')->where('name', 'John')->pluck('name');
DB::table('name')->pluck('column');
// 取多行数据的「列数据」数组$roles = DB::table('roles')->lists('title');
$roles = DB::table('roles')->lists('title', 'name');
// 指定一个选择字句$users = DB::table('users')->select('name', 'email')->get();
$users = DB::table('users')->distinct()->get();
$users = DB::table('users')->select('name as user_name')->get();
// 添加一个选择字句到一个已存在的查询语句中$query = DB::table('users')->select('name');
$users = $query->addSelect('age')->get();
// 使用 Where 运算符$users = DB::table('users')->where('votes', '>', 100)->get();
$users = DB::table('users')
->where('votes', '>', 100)
->orWhere('name', 'John')
->get