artisan
php artisan route:cache
php artisan route:clear
php artisan make:middleware Middlewarename
php artisan make:controller PhotoController
php artisan make:provider RiakServiceProvider
php artisan make:migration create_users_table //--table和--create选项可以用于指定表名以及该迁移是否要创建一个新的数据表
php artisan migrate
php artisan migrate:rollback //回滚迁移
php artisan migrate:reset //回滚所有应用迁移
php artisan migrate:refresh //重建数据库
php artisan make:seeder UserTableSeeder
php artisan make:model User
Route::get('/', function () { return 'Hello World'; });
Route::post('foo/bar', function () { return 'Hello World'; });
Route::put('foo/bar', function () { // });
Route::delete('foo/bar', function () { // });
Route::match(['get', 'post'], '/', function () { return 'Hello World'; });//多个动作注册路由
Route::any('foo', function () { return 'Hello World'; });//相应所有动作
表单中缴入隐藏字段
HTML 表单没有支持 PUT 、PATCH 或 DELETE 请求,可使用_method 字段,
路由参数
Route::get('user/{id?}/{name}', function($id=1)
{
//
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
?为可选参数,可设置参数默认值,或者使用正则表达式限制参数格式。
$route->input('id');//使用input方法
Route::get('user/{id}', function(Request $request, $id){ if ($request->route('id')) { // }});//使用Request
Route::get('user/profile', [ 'as' => 'profile', 'uses' => 'UserController@showProfile']);
将路由命名为profile,并且此路由使用控制器showProfile方法。
$url = route('profile');//获取路由url,等价于url('user/profile');
$redirect = redirect()->route('profile');//重定向到之前的路由
Route::group(['prefix' => 'admin', 'middleware' => ['foo', 'bar'], 'namespace' => 'Admin'], function()
{
Route::get('/', function() { // Has Foo And Bar Middleware });
Route::get('user/profile', function() { // Has Foo And Bar Middleware });
});
prefix关键字定义路由前缀
middleware关键字定义使用的中间件
namespace定义命名空间,控制器以及页面文件都在相应文件夹下的Admin子文件夹下
abort(404);
app/Http/Kernel.php 的$middleware 属性清单列表中
$url = action('App\Http\Controllers\FooController@method');
或者
URL::setRootControllerNamespace('App\Http\Controllers'); $url = action('FooController@method');
Route::controller('users', 'UserController', ['anyLogin' => 'user.login']);//将anyLogin()重命名了
class UserController extends Controller
{
public function getIndex() { // }
public function postProfile() { // }
public function anyLogin() { // }
public function getAdminProfile() {}//响应 users/admin-profile
}
Route::resource('photo', 'PhotoController', ['only' => ['index', 'show']]);//使用only/except来规定或者排除特定方法
动词
路径
行为
路由名称
GET
/photo
索引
photo.index
GET
/photo/create
创建
photo.create
POST
/photo
保存
photo.store
GET
/photo/{photo}
显示
photo.show
GET
/photo/{photo}/edit
编辑
photo.edit
PUT/PATCH
/photo/{photo}
更新
photo.update
DELETE
/photo/{photo}
删除
photo.destroy
取得特定输入数据你可以通过 Illuminate\Http\Request 的实例,经由几个简洁的方法取得所有的用户输入数据。不需要担心发出请求时使用的 HTTP 请求,取得输入数据的方式都是相同的。
public function store(Request $request)
{
$name = $request->input('name');
//
}
取得特定输入数据,若没有则取得默认值:$name = Request::input('name', 'Sally');
确认是否有输入数据:if (Request::has('name')){ // }
取得所有发出请求时传入的输入数据:$input = Request::all();
取得部分发出请求时传入的输入数据:$input = Request::only('username', 'password'); $input = Request::except('credit_card');
如果是「数组」形式的输入数据,可以使用「点」语法取得数组:$input = Request::input('products.0.name');
将当前的输入数据存进 session中,所以下次用户发出请求时可以使用保存的数据:Request::flash();/Request::flashOnly('username', 'email');/Request::flashExcept('password');
重定向至前一页,并将输入数据存成一次性 Session:
return redirect('form')->withInput();
return redirect('form')->withInput(Request::except('password'));
取得前一次请求所保存的一次性 Session,你可以使用 Request 实例中的 old 方法:$username = Request::old('username');
Blade 模板显示旧输入数据:{{ old('username') }}
取得上传文件$file = Request::file('photo');
确认文件是否有上传if (Request::hasFile('photo')){ // }
确认上传的文件是否有效if (Request::file('photo')->isValid()){ // }
移动上传的文件Request::file('photo')->move($destinationPath); Request::file('photo')->move($destinationPath, $fileName);
取得请求 URI$uri = Request::path();
判断一个请求是否使用了 AJAXif (Request::ajax()){ // }
取得请求方法$method = Request::method(); if (Request::isMethod('post')){ // }
确认请求路径是否符合特定格式if (Request::is('admin/*')){ // }
取得请求 URL$url = Request::url();
use Illuminate\Http\Response;
return (new Response($content, $status)) ->header('Content-Type', $value);
return response($content, $status) ->header('Content-Type', $value);
return response()->view('hello')->header('Content-Type', $type);//在响应送出视图
return response($content)->withCookie(cookie('name', 'value'));//附加 Cookies 到响应
return redirect('user/login');//重定向
return redirect('user/login')->with('message', 'Login Failed');//返回重定向并且加上快闪数据( Flash Data )
return redirect()->back();//返回根据前一个 URL 的重定向
return redirect()->back()->withInput();
return redirect()->route('profile', [1]);//返回根据路由名称的重定向,并给予路由参数赋值如果你的路由有参数,你可以放进 route 方法的第二个参数。
return redirect()->route('profile', [$user]);//如果你要重定向至路由且路由的参数为 Eloquent 模型的「ID」,你可以直接将模型传入,ID 将会自动被提取:
return redirect()->route('profile', ['user' => 1]);//返回根据路由名称的重定向,并给予特定名称路由参数赋值,路由的 URI 为:profile/{user}
return redirect()->action('App\Http\Controllers\HomeController@index');//返回根据控制器动作的重定向
return redirect()->action('App\Http\Controllers\UserController@profile', [1]);
return redirect()->action('App\Http\Controllers\UserController@profile', ['user' => 1]);//返回根据控制器动作的重定向,并给予特定名称参数赋值
传递数据到视图(通过Blade的{{}}语句显示)
使用传统的方法 $view = view('greeting')->with('name', 'Victoria');
使用魔术方法 $view = view('greeting')->withName('Victoria');
直接在 view 辅助方法的第二个参数直接传递一个数组$view = view('greetings', $data);
默认情况下,Blade的{{ }}语句已经通过PHP的htmlentities函数处理以避免XSS攻击,如果你不想要数据被处理,可以使用如下语法:Hello, {!! $name !!}.
确认视图是否存在if (view()->exists('emails.customer'))
从一个文件路径产生视图return view()->file($pathToFile, $data);
视图间共享数据,需要在服务提供者的boot方法中调用share方法,你可以将其添加到AppServiceProvider或生成独立的服务提供者来存放它们
public function boot()
{
view()->share('key', 'value');
}
@section和@yield指令,前者正如其名字所暗示的,定义了一个内容的片段,而后者用于显示给定片段的内容
通过如下方式显示name变量的内容
Hello, {{ $name }}.
The current UNIX timestamp is {{ time() }}.注意:Blade的{{}}语句已经经过PHP的htmlentities函数处理以避免XSS攻击。
由于很多JavaScript框架也是用花括号来表示要显示在浏览器中的表达式,可以使用@符号来告诉Blade渲染引擎该表达式应该保持原生格式不作改动。比如:Hello, @{{ name }}.
输出存在的数据{{ $name or 'Default' }}
默认情况下,Blade的{{ }}语句已经通过PHP的htmlentities函数处理以避免XSS攻击,如果你不想要数据被处理,可以使用如下语法:Hello, {!! $name !!}.
Blade还允许你在视图中定义注释:{{-- This comment will not be present in the rendered HTML --}}
$users = DB::select('select * from users where active = ?', [1]);
$results = DB::select('select * from users where id = :id', ['id' => 1]);
DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);
$affected = DB::update('update users set votes = 100 where name = ?', ['John']);
$deleted = DB::delete('delete from users');
DB::statement('drop table users');
$users = DB::table('users')->get();//从一张表中取出所有行
$user = DB::table('users')->where('name', 'John')->first();//从一张表中获取一行/一列
DB::table('users')->chunk(100, function($users) { foreach ($users as $user) { // } });//从一张表中获取组块结果集
$titles = DB::table('roles')->lists('title');//获取数据列值列表
$price = DB::table('orders') ->where('finalized', 1) ->avg('price');//count, max, min, avg, 和 sum等聚合函数
$users = DB::table('users')->select('name', 'email as user_email')->get();
$users = DB::table('users')->where('votes', '<>', 100)->get();
$users = DB::table('users') ->where('votes', '>', 100) ->orWhere('name', 'John') ->get();
[ Laravel 5.1 文档 ] 数据库 —— 查询构建器
Schema::create('users', function ($table) { $table->increments('id'); });//创建表
Schema::rename($from, $to);//重命名
Schema::drop('users');
Schema::dropIfExists('users');//删除表
Schema::table('users', function ($table) { $table->string('email'); });//创建列
[ Laravel 5.1 文档 ] 数据库 —— 迁移
默认规则是模型类名的复数作为与其对应的表名,你也可以在模型中定义table属性来指定自定义的表名:protected $table = 'my_flights';
[ Laravel 5.1 文档 ] Eloquent ORM