库结构生成器

目录

基本介绍

库结构生成器提供用于创建和修改数据库表的方法. 用流畅的语法风格操作表结构, 而无需使用任何供应商特定的SQL.

更过相关:

创建删除表

Schema类可以用于创建和删除表. 直接看一个例子:

创建一个简单的表:

Schema::create('users', function($table)
{
    $table->increments('id');
});

让我们看下这个例子. create方法告生成器, 这是一个新的表, 所以它应该被新建. 在第二个参数, 我们我们直接传递一个表操作的闭包函数. 使用此表的对象, 我们可以流畅地添加和删除列和表上的索引.

删除一张表:

Schema::drop('users');

从指定的数据库删除数据表:

Schema::drop('users', 'connection_name');

有时你可能需要到指定数据库的连接.

操作的时候指定数据库的连接:

Schema::create('users', function($table)
{
    $table->on('connection');
});

添加列

流畅的表生成器的方法允许在不使用供应商的SQL的情况下添加列. 让我们看下:

语句 描述
$table->increments('id'); 自动递增的字段
$table->string('email'); VARCHAR类型的列
$table->string('name', 100); 指定长度的VARCHAR类型的列
$table->integer('votes'); INTEGER类型的列
$table->float('amount'); FLOAT类型的列
$table->boolean('confirmed'); BOOLEAN类型的列
$table->date('created_at'); DATE类型的列
$table->timestamp('added_on'); TIMESTAMP类型的列
$table->timestamps(); 添加 created_atupdated_at
$table->text('description'); TEXT类型的列
$table->blob('data'); BLOB类型的列
->nullable() 定义该列允许空

提示: laravel的"boolean"类型映射到数据库系统的小整数列(small integer).

示例创建一个表并添加列.

Schema::table('users', function($table)
{
    $table->create();
    $table->increments('id');
    $table->string('username');
    $table->string('email');
    $table->string('phone')->nullable();
    $table->text('about');
    $table->timestamps();
});

删除列

从数据库删除列:

$table->drop_column('name');

从数据库删除多个列:

$table->drop_column(array('name', 'email'));

添加索引

结构生成器支持几种类型的索引. 有两种方法添加索引. 每个类型的索引拥有自己的方法;然而, 你也可以在同一行上一定义这列的索引 . 让我们看下:

字符串列创建唯一的索引:

$table->string('email')->unique();

如果你的风格是在单独的一行定义索引, 这里是方法的例子:

语句 描述
$table->primary('id'); 添加主键
$table->primary(array('fname', 'lname')); 添加联合主键
$table->unique('email'); 添加唯一性索引
$table->fulltext('description'); 添加全文索引
$table->index('state'); 添加基本索引

删除索引

若要删除索引, 你必须指定索引的名称. laravel会给所有索引分配一个合理的名称. 简单串连表名和索引中的列的名称, 然后追加索引类型. 让我们来看看一些例子:

语句 描述
$table->drop_primary('users_id_primary'); 从"users"表删除主键
$table->drop_unique('users_email_unique'); 从"users"表删除唯一性索引
$table->drop_fulltext('profile_description_fulltext'); 从"profile"表删除全局索引
$table->drop_index('geo_state_index'); 从"geo"删除基本索引

外键

您可以轻松地使用架构的接口添加到表的外键约束. 例如, 让我们假设你在posts表有user_id列, 外键关联到users表的id列. 这里介绍如何添加列的外键约束:

$table->foreign('user_id')->references('id')->on('users');

您也可以指定外键的"on delete"和"on update"的动作:

$table->foreign('user_id')->references('id')->on('users')->on_delete('restrict');

$table->foreign('user_id')->references('id')->on('users')->on_update('cascade');

您也可以轻松地删除外键约束. 默认的外键名称遵循和索引相同的约定, 例子如下:

$table->drop_foreign('posts_user_id_foreign');