📅  最后修改于: 2021-01-05 10:47:21             🧑  作者: Mango
众所周知,迁移是Laravel中的一项重要功能,它有助于我们以有序模式在数据库中创建表。有序模式意味着如果我们有一个运行php artisan命令的类,则会创建具有所有字段和列的表。
让我们了解迁移结构。
步骤1:移至C:\ xampp \ htdocs \ laravelproject \ database \ migrations目录。
上面的屏幕截图显示,我们已经打开了包含两个php文件的migrations文件夹。这些文件是类。该文件的名称为2014_10_12_000000_create_users_table ,其中2014_10_12_000000代表时间, create_users_table不代表表名,而是迁移的名称。
第2步:双击该类,这将带我进入扩展Migration的特定类。
bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
在上面的代码中,我们观察到迁移类包含两个方法,即up()方法和down()方法。 up()方法用于创建新表,将新的列或索引添加到数据库,而down()方法与up()方法相反,即,它丢弃字段。上面的类基本上是在数据库中创建表。 up()方法通过使用Schema类运行静态方法,即create()。
public function up()
{
Schema::create('users',function(Blueprint $table)
{
//
});
}
在up()方法的上述语法中,Schema是类,而'create'是Schema类的静态函数。 create()方法包含两个参数,即表名和闭包函数。 “用户”是表和闭合函数的名称,其中Blueprint类及其对象作为参数传递。 $ table用于在users表中创建列。
$ table-> bigIncrements('id'):这意味着$ table正在实现增量()方法,该方法将在users表中创建id列,并且此id是自动递增的。
$ table-> 字符串('name'):这意味着$ table实现了字符串()方法,该方法正在users表中创建name列。
$ table-> 字符串('email')-> unique():这意味着$ table实现了字符串()方法,该方法在users表中创建email列。它还实现了unique()函数,这意味着电子邮件应该是唯一的。
$ table-> timestamp('email_verified_at')-> nullable():这意味着$ table实现timestamp()方法,该方法在users表中创建email_verified_at列。此函数还会创建两列,即created_at和Updated_at ,并且在添加或更新新记录时会自动更新这两个字段。
down()方法的代码如下:
Schema::dropIfExists('users');
在上面的代码中,我们观察到down()方法通过使用Schema类调用dropIfExists('users')函数。该函数检查' users '表是否存在,如果' users '存在,则删除users表。
注意:到目前为止,我们已经了解了默认情况下已经创建的表或仅是蓝图。但是,我们也可以根据应用程序的功能创建自己的表。
要运行上面的代码,请按照以下步骤操作:
用您创建的名称更新数据库名称,如上面的屏幕快照所示。
上面的屏幕截图显示了迁移表已创建。
上面的输出表明,在Git bash窗口中运行迁移后,已经创建了“ users”表。