多个Laravel项目如何共用migrations详解
Laravel  /  管理员 发布于 5年前   332
前言 在实际开发中,我们可能经常会遇到一个项目会建立两个 Laravel 项目,一个是面向用户的 web/API,一个是管理员后台,这两个项目一般情况下是共用一个数据库的,那么我们的 migration 可以共用吗?该怎么操作? Migration就相当于数据库的版本控制工具,可以使用 php artisan migration 生成数据库表,但前提是要在database目录下有相应的表的PHP文件 下面话不多说了,来一起看看详细的介绍吧 在各项目里建各自 migration 我们先在 web/API 和 admin 里都建各自的 migration: 从 artisan migrate:status 的结果来看,两个 migration 都正常执行了,接下来我们试一下回滚操作。 先直接在 web 目录执行 报错了,因为在 web 项目里找不到 bar 这个 migration 文件;那如果我们刚刚是直接在 admin 目录执行,是能够正常回滚的,但是如果我们指定回滚两个版本: 这次回滚操作也是有问题的,只回滚了一半。 所以我们应该按照 migrate 的相反顺序执行回滚,即先在 admin 执行一次,然后再到 web 里再执行一次。我们上面的实验很简单,要记住这些顺序也不难,可是在实际的项目中,你的 migrations 就比这个复杂多了,而且只通过 migrate:status 你也看不出来执行顺序到底是怎么样的,所以在各个项目里各自维护各自的 migrations 似乎行不通... 共用一份 migration 上面的实验我们可以知道,我们在执行 artisan migrate 的时候,Laravel 会读取 migrations 目录里的文件和数据库里的记录,然后再执行相应的操作(并记录这次操作);回滚的时候 Laravel 会读取数据库中的记录,然后执行 migrations 目录里相应的文件中的 down 方法。 而当 migrations 分散在不同的项目(目录)里的时候,不管你在哪个项目中执行 那我们可以将所有 migrations 放在同一个地方,怎么操作呢?再建一个新的项目似乎有点麻烦了...我们先看看帮助吧: 果然有我们想要的东西:--path 和 --realpath,先来看看这两个参数是什么用途: --path[=PATH] 指定 migrations 文件的路径 那我们在进行 migrations 操作的时候,指定同一个路径,那就可以共用 migrations 了: 注:当你不带 --realpath 的时候,path 是以项目的根目录为 / 的 总结 所以,当我们需要在多个 Laravel 项目中共用 migrations 的时候,最好的做法是通过 --path 指定 migrations 文件的目录,这个目录可以是一个独立的 git repo,也可以是其中一个 Laravel 项目(我个人推荐放在其中一个项目中,采用独立的 git 分支),这样既可以共用 migrations,在团队协作的时候也不会混乱和出现冲突 好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。## web 目录php artisan make:migration foo# Created Migration: 2018_09_19_144940_foophp artisan migrate# Migration table created successfully.# Migrating: 2018_09_19_144940_foo# Migrated: 2018_09_19_144940_foophp artisan migrate:status# +------+-----------------------+-------+# | Ran? | Migration | Batch |# +------+-----------------------+-------+# | Yes | 2018_09_19_144940_foo | 1 |# +------+-----------------------+-------+## admin 目录php artisan make:migration bar# Created Migration: 2018_09_19_145255_barphp artisan migrate# Migrating: 2018_09_19_145255_bar# Migrated: 2018_09_19_145255_barphp artisan migrate:status# +------+-----------------------+-------+# | Ran? | Migration | Batch |# +------+-----------------------+-------+# | Yes | 2018_09_19_144940_foo | 1 |# +------+-----------------------+-------+# | Yes | 2018_09_19_145255_bar | 2 |# +------+-----------------------+-------+
php artisan migrate:rollback# Migration not found: 2018_09_19_145255_bar
php artisan migrate:rollback --step=2# Migration not found: 2018_09_19_144940_foo# Rolling back: 2018_09_19_145255_bar# Rolled back: 2018_09_19_145255_bar
migrate:rollback
时,都可能只有一部分 migration 文件被加载进来,因此会造成一些奇奇怪怪的问题。php artisan migrate --helpDescription: Run the database migrationsUsage: migrate [options]Options: --database[=DATABASE] The database connection to use --force Force the operation to run when in production --path[=PATH] The path to the migrations files to be executed --realpath Indicate any provided migration file paths are pre-resolved absolute paths --pretend Dump the SQL queries that would be run --seed Indicates if the seed task should be re-run --step Force the migrations to be run so they can be rolled back individually -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --env[=ENV] The environment the command should run under -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--realpath 表示 --path 指定的路径为绝对路径php artisan make:migration foo --path="../admin/database/migrations"# orphp artisan make:migration foo --path="/the/absolute_path/to/admin/database/migrations" --realpath# migratephp artisan migrate --path="../admin/database/migrations"# migrate:rollbackphp artisan migrate:rollback --path="../admin/database/migrations"
您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号