laravel5 学习笔记之migration

一、migrate初探

1、migrate使用  用sqlite做实验

    在配置文件中database.php中选择sqlite,并保证默认的数据库是存在的,如果没有新建对应的数据库

   

        'sqlite' => [
            'driver'   => 'sqlite',
            'database' => storage_path().'/database.sqlite',  //就是在文件下stroage中的数据库文件database.sqlite  如果不存在需要新建
            'prefix'   => '',
        ],

 

    用navicat连接这个sqlite数据库,发现这个库现在是空的,如图

laravel5 学习笔记之migration_第1张图片

在目录migration下发现有连个文件

2014_10_12_000000_create_users_table.php
2014_10_12_100000_create_password_resets_t

2、在命令行下执行 php artisan migrate ,如果migration下的文件有改动,将更改对应的sqlite数据表,结果如下图


此时在sqlite中将新建立对应的表,在navicat中查看如下

laravel5 学习笔记之migration_第2张图片

 
新建立了四张表,其中migration和sqlite_sequence是用来管理migration的。

重复步骤2 发现返回的结果是



表示在数据库中的文件与migration中的文件是一致的,没有更改。

在命令行输入php artisan发现关于migration的命令如下

laravel5 学习笔记之migration_第3张图片

migrate:refresh   如果发现数据表的字段名字有误或者是发现少个字段多个字段,此时执行php artisan migrate:refresh. 注意这个命令将会清空表中的数据。
migrate:rollback 将会撤销上步的php artisan migrate,就是建立的数据表将被删除


如何建立migration文件呢?

laravel5 学习笔记之migration_第4张图片

在命令行中执行php artisan make:migration create_articles_table --create="articles"
可以在项目的文件下看到新生成的一个文件如下
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateArticlesTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('articles', function(Blueprint $table)
        {
            $table->increments('id');
            $table->timestamps();  //在数据表中会多两个字段 更改和添加的字段  类型是datetime   可以在这下面添加其他的数据类型
}); }
/** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('articles'); } }

然后执行 php  artisan migrate 就会生成对应的新表。

 

小结:

     1、先通过   php artisan make:migration create_articles_table --create="articles"  生成对应的migration文件,在此文件中写好表中对应的字段。

     2、再通过  php artisan migrate  在数据表中建立新表

     3、如果发现表建立错了  撤销(就是删除表)的命令  php artisan rollback

     注意php artisan refresh 是针对所有的表的。

 

二、migrate再探 

   写migrate来建立数据表,比用sql来写简单的多

$table->bigIncrements('id');    ID 自动增量,使用相当于「big integer」类型
$table->bigInteger('votes');    相当于 BIGINT 类型
$table->binary('data');    相当于 BLOB 类型
$table->boolean('confirmed');    相当于 BOOLEAN 类型
$table->char('name', 4);    相当于 CHAR 类型,并带有长度
$table->date('created_at');    相当于 DATE 类型
$table->dateTime('created_at');    相当于 DATETIME 类型
$table->decimal('amount', 5, 2);    相当于 DECIMAL 类型,并带有精度与基数
$table->double('column', 15, 8);    相当于 DOUBLE 类型,总共有 15 位数,在小数点后面有 8 位数
$table->enum('choices', array('foo', 'bar'));    相当于 ENUM 类型
$table->float('amount');    相当于 FLOAT 类型
$table->increments('id');    相当于 Incrementing 类型 (数据表主键)
$table->integer('votes');    相当于 INTEGER 类型
$table->json('options');    相当于 JSON 类型
$table->longText('description');    相当于 LONGTEXT 类型
$table->mediumInteger('numbers');    相当于 MEDIUMINT 类型
$table->mediumText('description');    相当于 MEDIUMTEXT 类型
$table->morphs('taggable');    加入整数 taggable_id 与字串 taggable_type
$table->nullableTimestamps();    与 timestamps() 相同,但允许 NULL
$table->smallInteger('votes');    相当于 SMALLINT 类型
$table->tinyInteger('numbers');    相当于 TINYINT 类型
$table->softDeletes();    加入 deleted_at 字段于软删除使用
$table->string('email');    相当于 VARCHAR 类型
$table->string('name', 100);    相当于 VARCHAR 类型,并指定长度
$table->text('description');    相当于 TEXT 类型
$table->time('sunrise');    相当于 TIME 类型
$table->timestamp('added_on');    相当于 TIMESTAMP 类型
$table->timestamps();    加入 created_at 和 updated_at 字段
$table->rememberToken();    加入 remember_token 使用 VARCHAR(100) NULL
->nullable()    标示此字段允许 NULL
->default($value)    声明此字段的默认值
->unsigned()    配置整数是无分正负

建立migrate文件的方法

  用artisan建立模型时候,会自动建立对应的migrate文件;

  可以用artisan命令直接来建立migrate文件:php artisan make:migration create_users_table 可以在后面添加相应的参数php artisan make:migration add_votes_to_users_table --table=users;php artisan make:migration create_users_table --create=users   表示是已经有对应的表 还是新建立的表

 

你可能感兴趣的:(migration)