ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 第3节数据库迁移与数据填充 在上一小节中,我们已经使用过了数据迁移工具(Migration),在这一小节中,我们自己定义一个迁移文件。 ### 数据库迁移 我们要创建一个 articles 的表,那么迁移的命令是: ~~~ php artisan make:migration create_articles_table ~~~ 输入这条命令后会在 `D:\wamp\www\newblog.com\database\migrations\` 目录下,生成一个迁移文件`2017_04_21_061247_create_articles_table` ~~~ Administrator@STU-PC MINGW32 /d/wamp/www/newblog.com (auth) $ php artisan make:migration create_articles_table Created Migration: 2017_04_21_061247_create_articles_table ~~~ 下面我们来查看这个文件: ~~~ <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateArticlesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { // } /** * Reverse the migrations. * * @return void */ public function down() { // } } ~~~ 一个迁移类会包含两个方法:up 和 down。up 方法可为数据库增加新的数据表、字段、或索引,而 down 方法则可简单的反向运行 up 方法的操作。 更多相关知识可以查看手册:<http://d.laravel-china.org/docs/5.2/migrations#generating-migrations> 运行这条命令: ~~~ php artisan migrate ~~~ 这样就生成了一个 `atricles` 表。 ![](https://box.kancloud.cn/aec1a43e204799233fab87f6f9a80af9_1101x332.png) ### 数据填充文件 表中还没有任何数据,我们可以使用 数据填充: `artisan 生成 Seeder`。 运行下面的命令,生成 Seeder: ~~~ php artisan make:seeder ArticleSeeder ~~~ 会自动生成一个文件:`D:\wamp\www\newblog.com\database\seeds\ArticleSeeder.php` ~~~ <?php use Illuminate\Database\Seeder; class ArticleSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { // } } ~~~ 如何编写数据填充,可以查看这里:<http://d.laravel-china.org/docs/5.2/seeding#writing-seeders> ### Article 模型 我们要使用 Eloquent ORM 模型去操作数据库,大家可以通过这个链接了解:<http://d.laravel-china.org/docs/5.2/eloquent> 创建 Article Model 输入下面的命令: ~~~ php artisan make:model models/Article ~~~ 生成的 Atricle 类在:`D:\wamp\www\newblog.com\app\models\Article.php` ~~~ <?php namespace App\models; use Illuminate\Database\Eloquent\Model; class Article extends Model { // } ~~~ 到这里,我们再来完善 Seeder 数据填充的编写: ~~~ public function run() { DB::table('articles')->delete(); for ($i=0; $i < 10; $i++) { \App\Models\Article::create([ 'title' => 'Title '.$i, 'body' => 'Body '.$i, 'user_id' => 1, ]); } } ~~~ 接下来,把 ArticleSeeder 注册到系统内。 修改 `D:\wamp\www\newblog.com\database\seeds\DatabaseSeeder.php` ~~~ <?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { // $this->call(UsersTableSeeder::class); $this->call(ArticleSeeder::class); } } ~~~ 执行命令,即完成了数据的导入: ~~~ php artisan db:seed ~~~ 此时,我们在`phpmyadmin`工具中查看: ![](https://box.kancloud.cn/f7342c13c6a84b9d634cbb94c9b6da99_833x756.png) 被插入了10条数据! ### 提交更新到 github 这里的提交步骤和上一小节一样,就不在重复。 我们把该分支合并到master主分支。 ~~~ git status git branch -a git checkout master git merge auth git push git branch -d auth ~~~ 备注:使用 `git status` 查看当前工作区是否为空。 ![](https://box.kancloud.cn/1e6435ece205540358d8cf648cebec66_963x728.png)