我对这种类型的框架完全陌生。我来自准系统PHP开发,我似乎无法找到一个易于理解的指南迁移实际上做什么。
我正在尝试创建一个已有现有数据库的项目。我已经使用了这个:https://github.com/Xethron/migrations-generator[1]但是通过迁移对模式进行更改似乎吐出了错误,这意味着我不知道我在做什么。
我真的需要简单了解迁移实际执行的操作,它们如何影响数据库以及您认为有助于绝对初学者的任何其他内容。
答案 0 :(得分:14)
迁移是一种数据库版本控制。它们允许团队修改数据库模式并在当前模式状态下保持最新。迁移通常与Schema Builder配对,以便轻松管理应用程序的架构。
通过迁移,您无需在phpMyAdmin中创建表,您可以在Laravel中执行此操作。以下是创建用户表的示例:
class CreateUsersTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id'); // autoincrement id field
$table->string('name'); // string field
$table->string('lastname');
$table->string('title');
$table->string('email')->unique(); // unique string field
$table->string('password', 60); // string field with max 60 characters
$table->boolean('Status')->default(0); // string field with default value 0
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}
}
我这个代码我们用“name”,“lastname”这样的字段创建表格...我们在Laravel代码中说他们在迁移完成时是字符串类型我们在databese中有这个字段的完整表格。
运行迁移以创建表格
要创建迁移,您可以在 Artisan CLI (artisan命令行界面)上使用make:migration命令:
php artisan make:migration create_users_table
或
php artisan make:migration create_users_table --create=users
运行迁移到alter table
当您需要在数据库表示例中进行一些更改时:将字段投票添加到用户表,您可以在Laravel代码中执行此操作,而无需触及SQL代码
php artisan make:migration add_votes_to_users_table --table=users
回滚上次迁移操作
如果您犯了错误并做错了什么,您可以随时回滚以返回之前状态的数据库。
php artisan migrate:rollback
回滚所有迁移
php artisan migrate:reset
回滚所有迁移并重新运行
php artisan migrate:refresh
php artisan migrate:refresh --seed
迁移的最大好处之一是在不触及SQL代码的情况下创建数据库。您可以使用PHP代码中的关系创建整个数据库,然后将其迁移到MySQL,PL / SQL,MSSQL或任何其他数据库。
另外,我推荐免费Laravel 5 fundamental series,在第7集中,您可以听到有关迁移的更多信息。
答案 1 :(得分:2)
迁移的简单说明:
它们是数据库方案的版本控制系统。
想象一下,您正在设置一个新的应用程序。你要做的第一件事就是用几列创建一个表(称之为mytable
)。这将是您的第一次迁移。当您开始处理应用程序和 voila 时,您将运行迁移(php artisan migrate
)!您的数据库中有一个新表。
一段时间后,您决定在表格中需要一个新列。您在Laravel 5中创建了一个迁移(php artisan make:migration
),并为您创建了一个新的迁移文件。您更新该迁移中的代码,再次运行php artisan migrate
,表格中有一个新列。
好的,这是迁移背后的基本思想。但还有更多......
假设,稍后您意识到在创建上次迁移时搞砸了。您已经运行它,因此您的数据库已更改。你怎么解决它?好吧,如果您正确编写了迁移并实现了down
方法,那么您可以执行php artisan migrate:rollback
并回滚迁移。
Laravel如何做到这一点?通过在特殊数据库表中跟踪迁移。 php artisan migrate:install
命令将为您设置,以便Laravel可以管理这些迁移。
随着时间的推移,随着应用程序的增长,您将添加越来越多的迁移。 Laravel为您提供了一种方法,可以根据需要前进和后退您的迁移,以确保您的数据库处于您工作时所需的任何状态。
使用artisan
查看php artisan
命令列表。您还可以使用php artisan help <command>
请求有关特定命令的帮助。
答案 2 :(得分:2)
想象一下,您正在与其他开发人员合作开展项目。随着开发人员添加越来越多的功能,他们还需要添加越来越多的表,列,删除列,更改列数据类型等...
这可以非常快速,轻松地失控。如果您错过了一个开发人员的SQL,那么另一个开发人员的SQL可能无法正常工作。它也可能成为一个巨大的浪费时间试图排序一堆sql文件试图找出你错过了哪些。开发团队中的每个人都在使用不同的数据库或上帝禁止,只是时间问题,有人打破了生产数据库。通过迁移,您只需在命令行中运行php artisan migrate
,即可为您处理对数据库的所有更改。
这基本上是为什么迁移很有用我不打算深入了解它们的工作方式,因为Kryten已经在这里写了很好的文章。