说明
以前我们团队进行开发,如果数据库结构修改,就要从MySQLWorkbench把整个库或某个表的SQL语句导出来再提交到git, 别人用SQL语句重建某个库或某个表,这样好麻烦。Laravel Migrations就可以避免做这件事。只需要获取到migrations的文件,再migrate就可以了,而且还可以rollback。
数据库配置
在.env文件配置数据库环境的信息。
相关的migrate命令
-
创建migrations表记录相关的动作
php artisan migrate:install
-
更新数据库信息
php artisan migrate
-
回滚migrate操作
php artisan migrate:rollback
-
回滚到所有的migrate操作之前
php artisan migrate:reset
-
回滚到最开始的时候然后运行所有的mirgrations
php artisan migrate:refresh
-
查看migration状态
php artisan migrate:status
-
创建migration文件
php artisan make:migration 创建的所有文件在 database/migrations目录下
-
查看帮助
php artisan help make:migration
-
指定创建的migration文件名
php artisan make:migration create_admins_table
-
创建migration指定创建数据库表名
php artisan make:migration create_authors_table --create=authors 执行这个命令生成的代码, up 和 down方法自动填充了相关创建表和删除表的代码
-
创建migration指定修改的数据库表名
php artisan make:migration set_email_to_unique_on_authors_table --table=authors 执行这个命令生成的代码, up 和 down自带了指定表名的代码
-
migrations文件
所有的migrations文件在database/migrations目录下。
每个migration文件都有两个方法: up & down,up 表示执行migrate时候要执行的操作,down表示回滚up方法所进行的操作。这两个方法需要自行编写。
一般在up方法定义数据表结构, 例如:
public function up()
{
Schema::create('authors', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
}
直接用$table的相关方法设置数据表结构,相关的方法见Laravel 5的文档migrations节。
migrations文件中表的相关操作
-
判断表是否存在
if (Schema::hasTable('users')) { }
-
指定connection
Schema::connection('foo')->create('users', function ($table) { $table->increments('id'); });
-
指定数据库引擎
Schema::create('users', function ($table) { $table->engine = 'InnoDB'; $table->increments('id'); });
-
重命名
Schema::rename($from, $to);
-
删除表
Schema::drop('users'); Schema::dropIfExists('users');
migrations文件中列的相关操作
-
创建列
Schema::create('authors', function (Blueprint $table) { $table->increments('id'); $table->timestamps(); });
-
判断列是否存在
if (Schema::hasColumn('users', 'email')) { }
-
修改列 -- 使用change方法
Schema::table('users', function ($table) { $table->string('name', 50)->change(); });
-
重命名列
Schema::table('users', function ($table) { $table->renameColumn('from', 'to'); });
-
删除列
Schema::table('users', function ($table) { $table->dropColumn('votes'); $table->dropColumn(['votes', 'avatar', 'location']); });
migrations文件中索引的相关操作
-
创建索引
-
唯一性索引 -- 使用unique方法
$table->string('email')->unique();
-
复合索引
$table->index(['account_id', 'created_at']);
-
主键索引
$table->primary('id'); $table->primary(['first', 'last']);
-
普通索引
$table->index('state');
-
-
删除索引
必须提定索引的名称,索引的名称: 表名字段名索引类别
-
删除主键索引
$table->dropPrimary('users_id_primary');
-
删除唯一索引
$table->dropUnique('users_email_unique');
-
删除普通索引
$table->dropIndex('geo_state_index');
-
migrations文件中外键的相关操作
-
创建外键
在posts表中创建个user_id字段跟users表的id字段做外键约束
Schema::table('posts', function ($table) { $table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users'); });
-
删除外建
外键的名称: 表名_外键字段_foreign $table->dropForeign('posts_user_id_foreign');
相关推荐
`laravel-migrations-generator`工具正是为了解决这一问题而设计的,它允许开发者从现有的数据库中自动生成Laravel迁移文件,极大地提高了开发效率。 Laravel的迁移是数据库版本控制的一种方式,通过编写PHP类(即...
Laravel-Migrations-Organiser, Laravel 4和 5包,帮助组织迁移 Laravel 4和 5迁移管理器 在任何大小的项目中,迁移的数量可以能会很快变大,但是有一个大列表有时会不方便。这里软件包将把你的迁移放在 yyyy/mm ...
Laravel迁移生成器 从现有数据库生成Laravel迁移,包括索引和外键! V4变更 主要重写FieldGenerator和IndexGenerator 。 修复了其他错误。 添加了spatial数据类型支持,例如geometry , point等。 支持更多...
`laravel-api-migrations-master`压缩包可能包含了一个示例项目,展示了如何在实际项目中组织和使用API迁移。解压并研究这个项目,可以帮助你更好地理解Laravel API迁移的实践应用。 总结,Laravel的API迁移是构建...
**Laravel 开发:深入理解 Laravel Super Migrations** 在 Laravel 框架中,Migrations 是一种用于数据库版本控制的强大工具,它允许开发者随着时间的推移来管理数据库结构的变化。然而,随着项目的增长,数据库...
composer require --dev andyabih/json-to-laravel-migrations 创建JSON模式 在项目的根目录中创建一个schema.json文件,并使用如下所示的模板: { " posts " : { " name " : " string:50|index:50 " , " state...
Laravel移民组织者 ...composer require jaybizzle/laravel-migrations-organiser 将以下内容添加到config/app.php文件中的providers数组中。 Jaybizzle \ MigrationsOrganiser \ MigrationsOrganiserServ
在Laravel框架中,迁移(Migrations)是用于版本控制数据库结构的一种机制,它允许开发者在团队间同步数据库的变化。`Laravel开发-migrations-generator`工具则是为了方便开发者从现有的数据库自动生成对应的Laravel...
`laravel-batched-migrations`是一个关于如何在Laravel中实现批处理迁移的概念,它有助于确保迁移操作的唯一性和顺序性,尤其是在多开发环境协作时。让我们深入探讨这个话题。 ### 一、Laravel迁移简介 Laravel的...
MySQL Workbench导出Laravel 5迁移插件 一个MySQL Workbench插件,允许将模型导出到遵循PSR-2编码标准的Laravel 5迁移中。 导出后,将生成每个迁移并将其保存在其自己的,正确命名的迁移文件中。 版 0.1.5 科技类 此...
在Laravel框架中,数据库迁移(Migrations)是管理和版本控制数据库结构的一种高效方式。`laravel-easy-migrations`项目则是对Laravel原生迁移功能的扩展,它旨在简化和增强开发过程中的数据表创建和修改流程。下面...
让我们深入探讨这两个概念及其在Laravel 5.x中的应用。 一、数据库迁移(Migrations) 数据库迁移是Laravel提供的一种优雅方式来管理数据库结构的演变。它允许开发团队协作,同时保持数据库的一致性。在Laravel中...
"Laravel开发-laravel-5-boilerplate"标题表明我们正在讨论一个针对Laravel 5版本的开发模板或起点项目,这通常是开发者快速启动新项目的基础,包含了一系列预配置的组件和最佳实践。 在Laravel 5中,主要包含了...
Laravel 5安装推荐的安装方式是通过composer: composer require --dev " xethron/migrations-generator " 在Laravel 5.5中,服务提供商将自动注册。 在旧版本的框架中,编辑config/app.php并将其添加到provider
为了解决这个问题,我们关注的是"Laravel-unbreakable-migrations",它提供了一种机制来确保迁移过程要么全部成功,要么完全失败,避免了部分迁移的风险。 在Laravel标准的迁移中,每个迁移通常包含一系列数据库...
- **迁移 (Migrations)**:Laravel 提供了一种简单的方式来管理数据库结构的变化,通过编写迁移脚本可以轻松地创建或修改表结构。 - **Eloquent ORM**: - **模型 (Models)**:Eloquent 是 Laravel 的活跃记录实现...
在这个"Laravel开发-laravel-api-migrations"的压缩包中,我们很可能会找到与创建RESTful API和管理数据库结构变化相关的资源。 首先,让我们了解一下Laravel API开发。API(Application Programming Interface)是...