最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

多個(gè)Laravel項(xiàng)目如何共用migrations詳解

 更新時(shí)間:2018年09月25日 14:07:28   作者:Yian  
這篇文章主要給大家介紹了關(guān)于多個(gè)Laravel項(xiàng)目如何共用migrations的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧

前言

在實(shí)際開(kāi)發(fā)中,我們可能經(jīng)常會(huì)遇到一個(gè)項(xiàng)目會(huì)建立兩個(gè) Laravel 項(xiàng)目,一個(gè)是面向用戶(hù)的 web/API,一個(gè)是管理員后臺(tái),這兩個(gè)項(xiàng)目一般情況下是共用一個(gè)數(shù)據(jù)庫(kù)的,那么我們的 migration 可以共用嗎?該怎么操作?

Migration就相當(dāng)于數(shù)據(jù)庫(kù)的版本控制工具,可以使用

php artisan migration

生成數(shù)據(jù)庫(kù)表,但前提是要在database目錄下有相應(yīng)的表的PHP文件

下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧

在各項(xiàng)目里建各自 migration

我們先在 web/API 和 admin 里都建各自的 migration:

## web 目錄

php artisan make:migration foo
# Created Migration: 2018_09_19_144940_foo

php artisan migrate
# Migration table created successfully.
# Migrating: 2018_09_19_144940_foo
# Migrated: 2018_09_19_144940_foo

php 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_bar

php artisan migrate
# Migrating: 2018_09_19_145255_bar
# Migrated: 2018_09_19_145255_bar

php artisan migrate:status
# +------+-----------------------+-------+
# | Ran? | Migration    | Batch |
# +------+-----------------------+-------+
# | Yes | 2018_09_19_144940_foo | 1  |
# +------+-----------------------+-------+
# | Yes | 2018_09_19_145255_bar | 2  |
# +------+-----------------------+-------+

從 artisan migrate:status 的結(jié)果來(lái)看,兩個(gè) migration 都正常執(zhí)行了,接下來(lái)我們?cè)囈幌禄貪L操作。

先直接在 web 目錄執(zhí)行

php artisan migrate:rollback
# Migration not found: 2018_09_19_145255_bar

報(bào)錯(cuò)了,因?yàn)樵?web 項(xiàng)目里找不到 bar 這個(gè) migration 文件;那如果我們剛剛是直接在 admin 目錄執(zhí)行,是能夠正常回滾的,但是如果我們指定回滾兩個(gè)版本:

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

這次回滾操作也是有問(wèn)題的,只回滾了一半。

所以我們應(yīng)該按照 migrate 的相反順序執(zhí)行回滾,即先在 admin 執(zhí)行一次,然后再到 web 里再執(zhí)行一次。我們上面的實(shí)驗(yàn)很簡(jiǎn)單,要記住這些順序也不難,可是在實(shí)際的項(xiàng)目中,你的 migrations 就比這個(gè)復(fù)雜多了,而且只通過(guò) migrate:status 你也看不出來(lái)執(zhí)行順序到底是怎么樣的,所以在各個(gè)項(xiàng)目里各自維護(hù)各自的 migrations 似乎行不通...

共用一份 migration

上面的實(shí)驗(yàn)我們可以知道,我們?cè)趫?zhí)行 artisan migrate 的時(shí)候,Laravel 會(huì)讀取 migrations 目錄里的文件和數(shù)據(jù)庫(kù)里的記錄,然后再執(zhí)行相應(yīng)的操作(并記錄這次操作);回滾的時(shí)候 Laravel 會(huì)讀取數(shù)據(jù)庫(kù)中的記錄,然后執(zhí)行 migrations 目錄里相應(yīng)的文件中的 down 方法。

而當(dāng) migrations 分散在不同的項(xiàng)目(目錄)里的時(shí)候,不管你在哪個(gè)項(xiàng)目中執(zhí)行 migrate:rollback 時(shí),都可能只有一部分 migration 文件被加載進(jìn)來(lái),因此會(huì)造成一些奇奇怪怪的問(wèn)題。

那我們可以將所有 migrations 放在同一個(gè)地方,怎么操作呢?再建一個(gè)新的項(xiàng)目似乎有點(diǎn)麻煩了...我們先看看幫助吧:

php artisan migrate --help

Description:
 Run the database migrations

Usage:
 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

果然有我們想要的東西:--path 和 --realpath,先來(lái)看看這兩個(gè)參數(shù)是什么用途:

--path[=PATH]  指定 migrations 文件的路徑
--realpath     表示 --path 指定的路徑為絕對(duì)路徑

那我們?cè)谶M(jìn)行 migrations 操作的時(shí)候,指定同一個(gè)路徑,那就可以共用 migrations 了:

php artisan make:migration foo --path="../admin/database/migrations"

# or

php artisan make:migration foo --path="/the/absolute_path/to/admin/database/migrations" --realpath


# migrate
php artisan migrate --path="../admin/database/migrations"

# migrate:rollback
php artisan migrate:rollback --path="../admin/database/migrations"

注:當(dāng)你不帶 --realpath 的時(shí)候,path 是以項(xiàng)目的根目錄為 / 的

總結(jié)

所以,當(dāng)我們需要在多個(gè) Laravel 項(xiàng)目中共用 migrations 的時(shí)候,最好的做法是通過(guò) --path 指定 migrations 文件的目錄,這個(gè)目錄可以是一個(gè)獨(dú)立的 git repo,也可以是其中一個(gè) Laravel 項(xiàng)目(我個(gè)人推薦放在其中一個(gè)項(xiàng)目中,采用獨(dú)立的 git 分支),這樣既可以共用 migrations,在團(tuán)隊(duì)協(xié)作的時(shí)候也不會(huì)混亂和出現(xiàn)沖突

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 基于PHP 面向?qū)ο笾蓡T方法詳解

    基于PHP 面向?qū)ο笾蓡T方法詳解

    本篇文章是基于PHP 面向?qū)ο笾蓡T方法詳解。需要的朋友參考下
    2013-05-05
  • Thinkphp5框架ajax接口實(shí)現(xiàn)方法分析

    Thinkphp5框架ajax接口實(shí)現(xiàn)方法分析

    這篇文章主要介紹了Thinkphp5框架ajax接口實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了thinkPHP5 ajax交互相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • 深入PHP運(yùn)行環(huán)境配置的詳解

    深入PHP運(yùn)行環(huán)境配置的詳解

    本篇文章是對(duì)PHP運(yùn)行環(huán)境配置進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • PHP用星號(hào)隱藏部份用戶(hù)名、身份證、IP、手機(jī)號(hào)等實(shí)例

    PHP用星號(hào)隱藏部份用戶(hù)名、身份證、IP、手機(jī)號(hào)等實(shí)例

    這篇文章主要介紹了PHP用星號(hào)隱藏部份用戶(hù)名、身份證、IP、手機(jī)號(hào)等實(shí)例,需要的朋友可以參考下
    2014-04-04
  • PHP的new static和new self的區(qū)別與使用

    PHP的new static和new self的區(qū)別與使用

    這篇文章主要介紹了PHP的new static和new self的區(qū)別與使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • jQuery+Ajax+PHP“喜歡”評(píng)級(jí)功能實(shí)現(xiàn)代碼

    jQuery+Ajax+PHP“喜歡”評(píng)級(jí)功能實(shí)現(xiàn)代碼

    本文基于jQuery,通過(guò)PHP與mysql實(shí)現(xiàn)了一個(gè)評(píng)級(jí)功能,是一個(gè)簡(jiǎn)單的非常好的ajax應(yīng)用實(shí)例,需要的朋友可以參考下
    2015-10-10
  • PHP根據(jù)IP地址獲取所在城市具體實(shí)現(xiàn)

    PHP根據(jù)IP地址獲取所在城市具體實(shí)現(xiàn)

    這篇文章主要介紹了PHP根據(jù)IP地址獲取所在城市具體實(shí)現(xiàn),有需要的朋友可以參考一下
    2013-11-11
  • 實(shí)例講解php數(shù)據(jù)訪問(wèn)

    實(shí)例講解php數(shù)據(jù)訪問(wèn)

    這篇文章主要以實(shí)例講解的方式為大家詳細(xì)介紹了php數(shù)據(jù)訪問(wèn),數(shù)據(jù)訪問(wèn)有兩種方式,本文為大家揭曉,感興趣的小伙伴們可以參考一下
    2016-05-05
  • PHP自定義多進(jìn)制的方法

    PHP自定義多進(jìn)制的方法

    下面小編就為大家?guī)?lái)一篇PHP自定義多進(jìn)制的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • 神盾加密解密教程(二)PHP 神盾解密

    神盾加密解密教程(二)PHP 神盾解密

    前些日子一個(gè)朋友丟了個(gè)shell給我,讓我?guī)兔饷埽蜷_(kāi)源碼看了下寫(xiě)著是 “神盾加密” , 牛逼閃閃的樣子、 百度下發(fā)現(xiàn)神盾是個(gè)很古老的東西,最后一次更新是在 2012-10-09。和他相似的另一款是phpjm,有人說(shuō)是神盾抄襲phpjm的,這些都不是我們所要關(guān)心的問(wèn)題、phpjm一直在更新,而神盾貌似不搞了,我們分析下神盾,順便寫(xiě)成工具,方便大家使用(因?yàn)樗桓拢跃筒挥脫?dān)心解密工具失效問(wèn)題了)。
    2014-06-06

最新評(píng)論

依兰县| 上饶县| 垣曲县| 获嘉县| 日照市| 长治市| 外汇| 揭东县| 应用必备| 班戈县| 垫江县| 张掖市| 高碑店市| 汕尾市| 富锦市| 平湖市| 南安市| 红原县| 重庆市| 金阳县| 揭东县| 长子县| 武强县| 珲春市| 五大连池市| 绍兴市| 定远县| 拉萨市| 台北县| 岳阳县| 瓮安县| 南和县| 江山市| 新闻| 寿阳县| 虎林市| 河津市| 抚远县| 万年县| 沙雅县| 兰考县|