简要介绍一下数据库迁移,数据库迁移的目的是为了让开发能够快速共享数据库设置。下面是一些简要说明
同其他组件一样laravel为数据库迁移也提供了命令<code>php artisan make:migration create_setting_table</code>,可以快速生成一个setting设置表,注意这里不是直接在数据库生成表,而是生成一个存储和设置数据库字段的类,需要其他的命令来生成对应的数据库表。
下图就是在databases\migration文件夹中生成的规则
如果需要生成这些数据库中的table,需要在命令行中运行 <code>php artisan migrate</code>来生成数据库中表。此外还有其他操作,回滚上一次迁移<code>php artisan migrate:rollback</code>;回滚所有迁移<code>php artisan migrate:reset</code>
下面分享一些简单的数据库设置,看看就会明白其中道理。
class CreateSettingTable extend Migration{
public funtion up(){
Schema::create('setting',function(Blueprint $table){
$table->string('name',128)->primary();
$table->text('value')->nullable();
})
}
public funtion down(){
Schema::drop('setting');
}
}
下面是一个关于user的,比较复杂;
class CreateUserTable extend Migration{
publick funtion up(){
Schema::create('users',function(Blueprint $table){
$table->increments('id')->unsigned()->index();//increments代表主键、index代表基本索引、unsigned代表无符号
$table->string('name');//string代表VACHAR类型
$table->srting('password');//string代表VACHAR类型,可以通过string('name',number)来设置name的长度
$table->integer('age')->unsigned();//integer代表integer类型
$table->string('email')->unique();//unique设置唯一索引,不允许重复。
$talbe->string('QQ')->nullable();//允许null值
$table->string('weixin')->nullable();//允许null值
$table->string('school')->nullalbe();//允许null值
$table->enum('sex',array_keys(trans('global.sex')))->default('secret');//enum相当于枚举类型,global.sex 指被trans本地化后,经过array_key然后获取键值。
$table->enum('role',array_key(trans('global.role')))->default('person');//同上
$table->remember_token();//加入 remember_token 并使用 VARCHAR(100) NULL。用于自动登录
$table->timestamps();//加入created_at updated_at 字段
})
}
}