数据库建立及迁移
Laravel 5 把数据库配置的地方改到了 `learnlaravel5/.env`,打开这个文件,编辑下面四项,修改为正确的信息:
1
2
3
4
5
6
7
|
DB_HOST=localhost DB_DATABASE=laravel5 DB_USERNAME=root DB_PASSWORD=password |
推荐新建一个名为 laravel5 的数据库,为了学习方便,推荐使用 root 账户直接操作。
Laravel 已经为我们准备好了 Auth 部分的 migration,运行以下命令执行数据库迁移操作:
php artisan migrate
得到的结果如下:
如果你运行命令报错,请检查数据库连接设置。
至此,数据库迁移已完成。
模型 Models
接下来我们将接触Laravel最为强大的部分,Eloquent ORM,真正提高生产力的地方,借用库克的一句话:鹅妹子英!
运行一下命令:
1
2
3
|
php artisan make :model Article php artisan make :model Page |
> Laravel 4 时代,我们使用 Generator 插件来新建 Model。现在,Laravel 5 已经把 Generator 集成进了 Artisan。
现在,Artisan 帮我们在 `learnlaravel5/app/` 下创建了两个文件 `Article.php` 和 `Page.php`,这是两个 Model 类,他们都继承了 Laravel Eloquent 提供的 Model 类 `IlluminateDatabaseEloquentModel`,且都在 `App` 命名空间下。这里需要强调一下,用命令行的方式创建文件,和自己手动创建文件没有任何区别,你也可以尝试自己创建这两个 Model 类。
Model 即为 MVC 中的 M,翻译为 模型,负责跟数据库交互。在 Eloquent 中,数据库中每一张表对应着一个 Model 类(当然也可以对应多个)。
如果你从其他框架转过来,可能对这里一笔带过的 Model 部分很不适应,没办法,是因为 Eloquent 实在太强大了啦,真的没什么好做的,继承一下 Eloquent 类就能实现很多很多功能了。
如果你想深入地了解 Eloquent,可以阅读系列文章:Laravel 5框架学习之Eloquent 关系
接下来进行 Article 和 Page 类对应的 articles 表和 pages表的数据库迁移,进入 `learnlaravel5/database/migrations` 文件夹。
在 ***_create_articles_table.php 中修改:
1
2
3
4
5
6
7
8
9
10
|
Schema::create( 'articles' , function (Blueprint $table ) { $table ->increments( 'id' ); $table ->string( 'title' ); $table ->string( 'slug' )->nullable(); $table ->text( 'body' )->nullable(); $table ->string( 'image' )->nullable(); $table ->integer( 'user_id' ); $table ->timestamps(); }); |
在 ***_create_pages_table.php 中修改:
1
2
3
4
5
6
7
8
9
|
Schema::create( 'pages' , function (Blueprint $table ) { $table ->increments( 'id' ); $table ->string( 'title' ); $table ->string( 'slug' )->nullable(); $table ->text( 'body' )->nullable(); $table ->integer( 'user_id' ); $table ->timestamps(); }); |
然后执行命令:
php artisan migrate
成功以后, tables 表和 pages 表已经出现在了数据库里,去看看吧~
数据库填充 Seeder
在 `learnlaravel5/database/seeds/` 下新建 `PageTableSeeder.php` 文件,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php use IlluminateDatabaseSeeder; use AppPage; class PageTableSeeder extends Seeder { public function run() { DB::table( 'pages' )-> delete (); for ( $i =0; $i < 10; $i ++) { Page::create([ 'title' => 'Title ' . $i , 'slug' => 'first-page' , 'body' => 'Body ' . $i , 'user_id' => 1, ]); } } } |
然后修改同一级目录下的 `DatabaseSeeder.php`中:
// $this->call('UserTableSeeder');
这一句为
$this->call('PageTableSeeder');
然后运行命令进行数据填充:
php artisan db:seed
去看看 pages 表,是不是多了十行数据?