Laravel 初上手 11-07-2014
起步
路由
app/routes.php
1 | Route::get('users', function() |
访问 /users
将会看到 Users!
1 | Route::get('/', function() |
访问 /
将会从 app/views/
中找到 hello.blade.php
进行渲染。 路由也可以指向一个控制器类和动作方法:
1 | Route::get('users', 'UserController@getIndex'); |
访问 /user
将会使用 UserController
类的 getIndex
方法
建立视图
视图之间的引用, 引用: users.blade.php
1 | <!-- layout.blade.php --> |
layout.blade.php
1 | <!-- users.blade.php --> |
app/routes.php
1 | Route::get('users', function() |
访问 /users
生成的页面:
1 | <html> |
建立迁移文件
首先在app/config/database.php
配置数据库连接信息,之后创建迁移文件:
1 | php artisan migrage:make create_users_table |
生成对应的迁移文件包含 up
和 down
类在 app/database/migrations
,在 up
方法写上对数据表做的更动,在 down
方法写上对应的回滚代码。 迁移文件示例:
1 | public function up() |
执行 migrate
命令来执行迁移动作:
1 | php artisan margrate |
将会生成两个表:migrations
和 users
。 执行回滚迁移:
1 | php artisan migrate:rollback |
Eloquent ORM
定义一个 Eloquent 模型用来查询关联的数据库表在 app/models
,以下是一个 User.php
:
1 | class User extends Eloquent { |
不指定表时默认关联类名称的小写复数形态的数据库表也就是 users
,不希望自动更新 update_at
和 created_at
可以按下面处理:
1 | protected $timestamps = false; |
取出所有模型数据:
1 | $users = User::all(); |
根据主键取出一条数据:
1 | $user = User::find(1); |
根据主键取出一条数据或抛出异常,让 App::error
处理并显示 404:
1 | $model = User::findOrFail(1); |
注册异常处理,通过监听 ModelNotFoundException
:
1 | use Illuminate\Database\Eloquent\ModelNotFoundException; |
Eloquent 模型结合查询语法:
1 | $users = User::where('votes', '>', 100)->take(10)->get(); |
Eloquent 聚合查询:
1 | $count = User::where('votes', '>', 100)->count(); |
显示数据
在 rootes.php
部署 with
方法:
1 | Route::get('users', function() |
users.blade.php
1 | @extends('layout') |
Blade 使用两个大括号来输出数据,AngularJS 也是如此。
配置
引言
访问一个配置的值:
1 | Config::get('app.timezone'); |
指定一个默认值不存在则返回:
1 | $timezone = Config::get('app.timezone', 'UTC'); |
设置一个配置:
1 | Config::set('database.default`, `sqlite`); |
环境配置
在 app/config/local/
可以创建与 app/config/
下同名的配置文件对其进行覆盖,不过不能使用 testing
作为环境名称,这是为单元测试预留的。
访问当前应用环境
bootstrap/start.php
1 | $enviroment = App::enviroment(); |
检查环境:
1 | if (App::environment('local')) |
维护模式
维护方法 App::down
位于 app/start/global.php
,启用:
1 | php artisan down |
禁用维护模式:
1 | php artisan up |
维护模式显示自定义视图,在 app/start/global.php
添加:
1 | App::down(function() |
请求的生命周期
发送给应用程序的所有请求都经由 public/index.php
脚本处理。如果是用的是 Apache 服务器,Larave 中包含的 .htaccess
文件将对所有请求进行处理并传递给 index.php
。这是 Laravel 从接受客户端请求到返回响应给客户端的整个过程的开始。
- 请求进入
public/index.php
文件。 bootstrap/start.php
文件创建应用程序对象并检测环境。- 内部的
framework/start.php
文件配置相关设置并加载服务提供器。 - 加载应用程序
app/start
目录下的文件。 - 加载应用程序的
app/routes.php
文件。 - 将 Request 对象发送给应用程序对象,应用程序返回一个 Response 对象。
- 将 Response 对象发回客户端。
启动文件
启动文件被存放在 app/start
目录中,默认情况下内有 global.php
、local.php
、artisan.php
三个文件。
路由
基本路由
基本 GET 路由
1 | Route::get('/', function() |
基本 POST 路由
1 | Route::post('foo/bar', function() |
为多个动作注册同一个路由:
1 | Route::match(array('GET', 'POST'), '/', function() |
注册一个可以响应任何 HTTP 动作的路由:
1 | Route:any('foo', function() |
仅支持 HTTPS 的路由:
1 | Route:get('foo', array('https', function() |
实际开发中需要根据路由生成 URL,URL::to
方法可以满足此需求:
1 | $url = URL::to('foo'); |
路由参数
1 | Route::get('user/{id}', function($id) |