Skip to content

Commit 88da073

Browse files
author
王赛
committed
Merge pull request #23 from wizarot/master
翻译完成 migrations.md章节
2 parents a9025e3 + 62b5f96 commit 88da073

File tree

2 files changed

+192
-0
lines changed

2 files changed

+192
-0
lines changed

cn/migrations.md

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# 数据库迁移 & 数据填充
2+
3+
- [简介](#introduction)
4+
- [创建数据迁移](#creating-migrations)
5+
- [运行数据迁移](#running-migrations)
6+
- [回滚数据迁移](#rolling-back-migrations)
7+
- [数据库填充](#database-seeding)
8+
9+
<a name="introduction"></a>
10+
## 简介
11+
12+
Migrations是一种数据库版本控制功能.它允许团队开发者修改数据库结构,并使其保持最新状态.Migrations通常和[结构生成器](/docs/schema) 配合使用来管理您的应用程序结构.
13+
14+
<a name="creating-migrations"></a>
15+
## 创建数据迁移
16+
17+
使用 Artisan 命令行的 `migrate:make` 命令创建一个迁移:(在命令行模式下使用)
18+
19+
php artisan migrate:make create_users_table
20+
21+
所有的迁移都被存放在 `app/database/migrations` 文件夹下,文件以时间戳命名以方便Laravel框架按时间来界定这些文件顺序.
22+
23+
您可以在创建迁移的时候使用 `--path` 选项,用来指定迁移文件存放的路径.该路径是你安装框架根目录的相对路径:
24+
25+
php artisan migrate:make foo --path=app/migrations
26+
27+
`--table``--create` 选项用来指定表名以及是否创建一个新表:
28+
29+
php artisan migrate:make add_votes_to_user_table --table=users
30+
31+
php artisan migrate:make create_users_table --create=users
32+
33+
<a name="running-migrations"></a>
34+
## 运行数据迁移
35+
36+
#### 运行所有迁移(使你的所有表保持最新)
37+
38+
php artisan migrate
39+
40+
#### 运行某个路径下的所有迁移(指定迁移文件路径)
41+
42+
php artisan migrate --path=app/foo/migrations
43+
44+
#### 运行某个包下的所有迁移(安装或升级某个扩展包对应数据库时候使用)
45+
46+
php artisan migrate --package=vendor/package
47+
48+
> **注意:** 如果在运行迁移的时候收到一个 "class not found" 的错误,请尝试运行 `composer dump-autoload` 命令.
49+
50+
### 在生产环境中强制使用数据迁移
51+
52+
有些迁移操作具有破坏性,会导致你丢失数据库中原有数据.为了防止你运行这样的命令造成不必要的破坏,这些命令运行的时候会询问你是否确定要这样做.如果你想运行这样的命令而不出现提示,可以使用 `--force` 选项:
53+
54+
php artisan migrate --force
55+
56+
<a name="rolling-back-migrations"></a>
57+
## 回滚数据迁移(即使回滚,原有数据也被破坏了,只能回滚表结构,所以别拿这个功能当救命稻草)
58+
59+
#### 回滚最后一次迁移
60+
61+
php artisan migrate:rollback
62+
63+
#### 回滚所有迁移
64+
65+
php artisan migrate:reset
66+
67+
#### 回滚所有迁移并重新运行数据迁移
68+
69+
php artisan migrate:refresh
70+
71+
php artisan migrate:refresh --seed
72+
73+
<a name="database-seeding"></a>
74+
## 数据库填充
75+
76+
Laravel 可以非常简单的使用数据填充类(seed classes)帮你生成一些测试数据放到数据库中去.所有的数据填充类(seed classes)都存放在 `app/database/seeds` 路径下.数据填充类(seed classes)你可以随便命名,但最好遵循一些合理的约定,例如 `UserTableSeeder` 等. `DatabaseSeeder`是一个已经生成好的默认类(它将默认被执行,你也可以把这个当作例子).在这个类(DatabaseSeeder)中,你可以使用 `call` 方法来运行其他数据填充类,这样你就能控制数据填充的顺序了.
77+
78+
#### 数据库填充类的例子
79+
80+
class DatabaseSeeder extends Seeder {
81+
82+
public function run()
83+
{
84+
$this->call('UserTableSeeder');
85+
86+
$this->command->info('User table seeded!');
87+
}
88+
89+
}
90+
91+
class UserTableSeeder extends Seeder {
92+
93+
public function run()
94+
{
95+
DB::table('users')->delete();
96+
97+
User::create(array('email' => '[email protected]'));
98+
}
99+
100+
}
101+
102+
使用 Artisan 命令行的 `db:seed` 命令填充数据库:
103+
104+
php artisan db:seed
105+
106+
默认情况下 `db:seed` 命令运行的是 `DatabaseSeeder` 类, 这个类中可以(像上面的例子中那样)调用其他seed类. 但是你也可以使用 `--class` 选项来单独运行指定数据库填充类 :
107+
108+
php artisan db:seed --class=UserTableSeeder
109+
110+
您也可以使用 `migrate:refresh` 命令,这将回滚并重新运行所有数据库迁移:
111+
112+
php artisan migrate:refresh --seed

cn/redis.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Redis
2+
3+
- [简介](#introduction)
4+
- [配置](#configuration)
5+
- [使用方法](#usage)
6+
- [流水线(Pipelining)](#pipelining)
7+
8+
<a name="Introduction"></a>
9+
## 简介
10+
11+
[Redis](http://redis.io) 是一个开源的先进键值存储工具(其实是Nosql数据库的一种). 它常用来进行一些数据结构的存储,这些数据结构包括 [strings(字符串)](http://redis.io/topics/data-types#strings), [hashes(哈希表)](http://redis.io/topics/data-types#hashes), [lists(双向链表)](http://redis.io/topics/data-types#lists), [sets(无序集合)](http://redis.io/topics/data-types#sets), and [sorted sets(有序集合)](http://redis.io/topics/data-types#sorted-sets).
12+
13+
> **注意:** 如果你的Redis PHP扩展是使用PECL安装的,那你需要将 `app/config/app.php` 文件中的 Redis别名(alias)改成别的名字.
14+
15+
<a name="configuration"></a>
16+
## 配置
17+
18+
Redis的配置信息存储在 **app/config/database.php** 文件内. 在这个文件里你可以看见一个 **redis** 数组,它就是你应用中使用Redis的相关配置:
19+
20+
'redis' => array(
21+
22+
'cluster' => true,
23+
24+
'default' => array('host' => '127.0.0.1', 'port' => 6379),
25+
26+
),
27+
28+
这个 `defaule`(默认) 的服务器配置可以在做开发的时候使用. 你也可以任意的按照你的需要和使用环境来进行配置. 你可以简单的给每个Redis服务器起一个名字并指定服务器(host)和端口(port).
29+
30+
上面那个 `cluster`(集群) 选项是告诉Laravel框架Redis的客户端要访问多个节点,允许你在内存中建立一个记录这些节点的节点池. 然而,请注意客户端不会处理故障转移,也就是说缓存的数据可能会从另一个服务器上读取(这个不是特别理解,可能是说一旦一个节点上的服务器挂了,有可能配置了集群这个选项后就能在集群中其他服务器节点上读取到你要的缓存数据了).
31+
32+
如果你的 Redis服务器端使用了用户验证,你需要增加一个 `password` 键值对选项到配置的数组中来配置密码.
33+
34+
<a name="usage"></a>
35+
## 使用方法
36+
37+
你可以用 `Redis::connection` 方法来获取一个Redis连接实例:
38+
39+
$redis = Redis::connection();
40+
41+
这样做可以给你一个默认的Redis服务器连接实例.如果你需要其他服务器连接实例,那么你就要在连接函数中声明你具体需要使用的那个连接配置名称(这个名称就是前面你在配置里除了 default 外自定义的其他连接名称):
42+
43+
$redis = Redis::connection('other');
44+
45+
一旦你有了一个Redis的客户端连接实例,你就可以发送你的 [Redis commands(Redis操作命令)](http://redis.io/commands) 来操作Redis数据库了.Laravel使用魔术方法来发送命令到Redis服务器(即你可以按照实际需要发送任何Redis能处理的命令过去):
46+
47+
$redis->set('name', 'Taylor');
48+
49+
$name = $redis->get('name');
50+
51+
$values = $redis->lrange('names', 5, 10);
52+
53+
注意命令对应的参数可以简单的放在魔术方法调用的函数括号里面发送.当然,你可能不喜欢使用魔术方法来调用那些命令,你也可以通过 `command` 方法向服务器发送命令:
54+
55+
$values = $redis->command('lrange', array(5, 10));
56+
57+
当你只是想简单执行一下default(默认)连接的命令时,你可以使用 `Redis` 类的静态魔术方法:
58+
59+
Redis::set('name', 'Taylor');
60+
61+
$name = Redis::get('name');
62+
63+
$values = Redis::lrange('names', 5, 10);
64+
65+
> **注意:** Redis [cache(缓存)](/docs/cache)[session](/docs/session) 驱动程序已经包含在Laravel框架内.
66+
67+
<a name="pipelining"></a>
68+
## 流水线(Pipelining)
69+
70+
流水线模式(Pipelining)是当你需要一次向服务器发送多个命令的时候使用的方法.你需要使用 `pipeline` 命令来开头:
71+
72+
#### 流水线模式可以一次向Redis服务器发送多条指令
73+
74+
Redis::pipeline(function($pipe)
75+
{
76+
for ($i = 0; $i < 1000; $i++)
77+
{
78+
$pipe->set("key:$i", $i);
79+
}
80+
});

0 commit comments

Comments
 (0)