Home >php教程 >php手册 >php Laravel框架学习(一) 之 建立数据库并填充测试数据

php Laravel框架学习(一) 之 建立数据库并填充测试数据

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-06 19:45:042230browse

php Laravel框架学习(一) php Laravel框架学习之Laravel 建立数据库并填充测试数据 建立数据库 前面我们已经明确目标网站的基本功能,现在我们先来建立它的数据库。 设计数据库 从功能上看,我们的数据库只需要两张表即可,admin表用来存放管理员帐户信息,d

php Laravel框架学习(一)

php Laravel框架学习之Laravel 建立数据库并填充测试数据

建立数据库

前面我们已经明确目标网站的基本功能,现在我们先来建立它的数据库。

设计数据库

从功能上看,我们的数据库只需要两张表即可,admin表用来存放管理员帐户信息,docs表则是文章数据。当然你可以自己决定这两张表的名字。

我们建立的是一个功能十分简单的文档网站,因此数据库也可以很简单。admin表我们只需要id、email和password三个字段。docs表我们建立id、title、content、create_date和last_change五个字段。

下面我们可以着手建立这两张表,最简单的方法是直接在mysql中建立,你可以用可视化的phpmyadmin工具,也可以直接使用mysql命令行。但是这里讲的是用laravel框架来创建它。

框架设置

首先我们需要设置一下laravel框架,打开application/config/application.php文件,我们要先把文件中的key参数设置为任意的32位字符串:

'key' => 'YourSecretKeyGoesHere!',
<ol><li><span><code></code></span></li></ol>

这个字符串会被用于加密我们的密码。然后在application/config/database.php中设置数据库信息,其中database是我们事先建立的,你可以随意命名:

'mysql' => array(
        'driver'   => 'mysql',
        'host'     => 'localhost',
        'database' => 'database',
        'username' => 'root',
        'password' => '123456',
        'charset'  => 'utf8',
        'prefix'   => '',
        ),
<ol><li><span>创建数据库</span></li></ol>

然后我们将使用Artisan和Migrations工具来建立数据库,你可以简单的把它理解为一个数据库工具,在使用它之前我们需要初始化它。先把你的php目录加入到系统的环境变量中,然后打开cmd工具cd到web的根目录运行命令:

php artisan migrate:install
<ol><li><span><code></code></span></li></ol>

这是我们进入database数据库发现里面多了一张名为laravel_migrations的表,它记录了migrate需要的数据。然后我们运行下面的两条命令:

php artisan migrate:make create_admin_table
php artisan migrate:make create_docs_table
<ol><li><span><code></code></span></li></ol>

运行成功之后我们可以在application/migrations目录看到名为日期_creat_admin_table.php和日期_creat_docs_table.php两个文件。

先打开creat_admin_table.php文件,在up和down方法中添加代码:

<ol>
<li><pre class="brush:php;toolbar:false">public function up()
{
    Schema::create('admin',function($table)
    {
        $table->increments('id');
        $table->string('email',64);
        $table->string('password',64);
     });
     DB::table('admin')->insert(array(
                        'email'=>'your email',
                        'password'=>Hash::make('your password'),
                    ));
}
public function down()
{
    Schema::drop('admin');
}
  • 再编辑creat_docs_table.php文件:

    <ol>
    <li><pre class="brush:php;toolbar:false">public function up()
    {
        Schema::create('docs',function($table)
        {
            $table->increments('id');
            $table->string('title',64);
            $table->text('content');
            $table->string('create_date',12);
            $table->string('last_change',12);
        });
         DB::table('docs')->insert(array(
                            'title'=>'test',
                            'content'=>'just a test!',
                            'create_date'=>time(),
                            'last_change'=>''
                        ));
    }
    public function down()
    {
        Schema::drop('docs');
    }
  • 保存完毕之后我们继续运行命令:

    <ol>
    <li><code>php artisan migrate</code></li>
    <li>
    <code></code><pre class="brush:php;toolbar:false">// 如果你看到下面两条提示,那么说明数据库已经创建完毕。
    
    Migrate: application/2012_08_14_043216_create_admin_table
    Migrate: application/2012_08_14_043242_create_docs_table
  • 非常好,网站的数据库已经建好了,我们还插入了两条数据方便我们测试。

    数据库填充与迁移

    在前几节我们讲到了数据迁移,数据迁移可以创建数据表的结构,其实,数据迁移也同样可以插入数据,需要创建一个新的迁移文件:

    <span>1</span> php artisan migrate:make seed_authors_table  

    运行如下:

    php Laravel框架学习(一) 之 建立数据库并填充测试数据

    编辑新生成的文件2014_03_12_063755_seed_authors_table.php,

    php Laravel框架学习(一) 之 建立数据库并填充测试数据

    <span> 1</span> <span>php
    </span><span> 2</span> <span>use</span><span> Illuminate\Database\Schema\Blueprint;
    </span><span> 3</span> <span>use</span><span> Illuminate\Database\Migrations\Migration;
    </span><span> 4</span> 
    <span> 5</span> <span>class</span> SeedAuthorsTable <span>extends</span><span> Migration {
    </span><span> 6</span> 
    <span> 7</span>     <span>/*</span><span>*
    </span><span> 8</span> <span>     * Run the migrations.
    </span><span> 9</span> <span>     *
    </span><span>10</span> <span>     * @return void
    </span><span>11</span>      <span>*/</span>
    <span>12</span>     <span>public</span> <span>function</span><span> up()
    </span><span>13</span> <span>    {
    </span><span>14</span>         DB::table('authors')-><span>insert(
    </span><span>15</span>             <span>array</span><span>(
    </span><span>16</span>                 <span>array</span><span>(
    </span><span>17</span>                     'name' => 'Bowen',
    <span>18</span>                     'age' => 25,
    <span>19</span>                     'active'=> 1,
    <span>20</span>                     'email'=>'bowen@nova.com',
    <span>21</span>                     'bio' => '',
    <span>22</span>                     'role_id'  => 2
    <span>23</span>                 ),
    <span>24</span>                 <span>array</span><span>(
    </span><span>25</span>                     'name' => 'Judith',
    <span>26</span>                     'age' => 21,
    <span>27</span>                     'active'=>0,
    <span>28</span>                     'email'=>'judith@nova.com',
    <span>29</span>                     'bio' => '',
    <span>30</span>                     'role_id'  => 1
    <span>31</span> <span>                )
    </span><span>32</span> <span>            ));
    </span><span>33</span> <span>    }
    </span><span>34</span> 
    <span>35</span>     <span>/*</span><span>*
    </span><span>36</span> <span>     * Reverse the migrations.
    </span><span>37</span> <span>     *
    </span><span>38</span> <span>     * @return void
    </span><span>39</span>      <span>*/</span>
    <span>40</span>     <span>public</span> <span>function</span><span> down()
    </span><span>41</span> <span>    {
    </span><span>42</span>         DB::table('authors')-><span>delete();
    </span><span>43</span> <span>    }
    </span><span>44</span> }

    php Laravel框架学习(一) 之 建立数据库并填充测试数据

    运行该迁移文件如下:

    php Laravel框架学习(一) 之 建立数据库并填充测试数据

    查看数据库”authors”表,发现多了两条数据:

    php Laravel框架学习(一) 之 建立数据库并填充测试数据

    数据库迁移填充的坏处

    虽然我们可以使用数据库迁移的方式进行填充,但是这种方式有很多的缺点:

    • 如果执行了迁移的回滚操作,那么我们添加的数据将会丢失;
    • 更改数据比较麻烦

    Laravel数据库填充(Seeder)

    从4开始,artisan现在提供了一种巧妙的方式填充数据库。迁移永远不应该被应用于填充数据库。数据填充使用artisan db:seed命令,来非常简单的完成填充操作。

    这个简单的方式通过填充类使用测试数据填充您的数据库。所有的填充类都存放在app/database/seeds 目录下。填充类可以以形式命名,但最好遵循一些合理的约束,比如 UserTableSeeder等。默认情况下,一个 DatabaseSeeder 类以为您定义。在这个类中,您可以使用 call 函数运行其他填充类,允许您控制填充顺序。

    创建新的填充文件

    要给”authors”表填充数据,在app/database/seeds 目录下创建新的文件AuthorTableSeeder.php,编辑该文件:

    php Laravel框架学习(一) 之 建立数据库并填充测试数据

    <span> 1</span> <span>php
    </span><span> 2</span> 
    <span> 3</span> <span>class</span>  AuthorTableSeeder <span>extends</span><span> Seeder {
    </span><span> 4</span>     <span>public</span> <span>function</span><span> run()
    </span><span> 5</span> <span>    {
    </span><span> 6</span>         Author::create(<span>array</span><span>(
    </span><span> 7</span>                     'name' => 'Test1',
    <span> 8</span>                     'age' => 25,
    <span> 9</span>                     'active'=> 1,
    <span>10</span>                     'email'=>'test1@nova.com',
    <span>11</span>                     'bio' => '',
    <span>12</span>                     'role_id'  => 2
    <span>13</span> <span>        ));
    </span><span>14</span> <span>    }
    </span><span>15</span> }

    php Laravel框架学习(一) 之 建立数据库并填充测试数据

    然后执行artisan命令行:

    <span>1</span> php artisan db:seed --<span>class</span>=AuthorTableSeeder

     

    然后数据库中就会新加入一条记录。

    还有一种全局的执行方法php artisan db:seed,可以执行多个填充类。该方法是执行的DatabaseSeeder这个类,我们编辑这个类:

    php Laravel框架学习(一) 之 建立数据库并填充测试数据

    <span> 1</span> <span>class</span> DatabaseSeeder <span>extends</span><span> Seeder {
    </span><span> 2</span> 
    <span> 3</span>     <span>/*</span><span>*
    </span><span> 4</span> <span>     * Run the database seeds.
    </span><span> 5</span> <span>     *
    </span><span> 6</span> <span>     * @return void
    </span><span> 7</span>      <span>*/</span>
    <span> 8</span>     <span>public</span> <span>function</span><span> run()
    </span><span> 9</span> <span>    {
    </span><span>10</span>         Eloquent::<span>unguard();
    </span><span>11</span> 
    <span>12</span>         <span>$this</span>->call('AuthorTableSeeder'); <span>//</span><span>调用'AuthorTableSeeder'填充类</span>
    <span>13</span> 
    <span>14</span>         <span>$this</span>->command->info('Employee table seeded!'<span>);
    </span><span>15</span> <span>    }
    </span><span>16</span> 
    <span>17</span> }

    php Laravel框架学习(一) 之 建立数据库并填充测试数据

    您也可以使用 migrate:refresh 命令填充数据库,将会回滚并重新运行所有迁移:然后执行php artisan db:seed,这时同样会成功添加数据。

    <span>1</span> php artisan migrate:refresh --seed

    Laravel框架 官网:http://v4.golaravel.com/docs/4.2

    http://yancjie.blog.163.com/blog/static/2009290172012811113459690/

    http://www.cnblogs.com/huangbx/p/Laravel_6.html

    框架入门案例:

     http://www.uncletoo.com/html/application/773.html



    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Previous article:【php】微信公众平台Next article:php 邮件类