2017-02-16 67 views
0

我需要一個環境變量添加到Laravel的php artisan migrate指令與碼頭工人使用,如:前插命令 - 包括子命令

env DB_HOST=127.0.0.1 php artisan migrate 

我在.zshrc文件中像這樣創建的函數:

function migrate() { 
    (env DB_HOST=127.0.0.1 php artisan migrate $*) 
} 

然而Laravel的命令結構的工作方式是這樣的:

migrate 
    migrate:install  Create the migration repository 
    migrate:refresh  Reset and re-run all migrations 
    migrate:reset  Rollback all database migrations 
    migrate:rollback  Rollback the last database migration 
    migrate:status  Show the status of each migration 

所以這不會對這樣的命令工作:

migrate:refresh --seed 

是有辦法,我可以寫的功能還新增了可變所有這些「孩子」命令呢?

+0

你不能有幾個env變量嗎?它可能更簡單。 – user2915097

+0

如果我正確理解你,我的.env文件需要'DB_HOST = mysql',但是在CLI上(這是在docker容器之外)需要'DB_HOST = 127.0.0.1'這就是爲什麼我正在探索這個解決方案 – daviestar

回答

1

我假設你希望能夠做到這一點:migrate refresh --seed,然後

migrate() { 
    local subcommand=$1 
    shift 
    env DB_HOST=127.0.0.1 php artisan migrate:"$subcommand" "${@}") 
} 

嗯,也許

artisan() { 
    env DB_HOST=127.0.0.1 php artisan "${@}") 
} 
for subcommand in \ 
    migrate   \ 
    migrate:install \ 
    migrate:refresh \ 
    migrate:reset \ 
    migrate:rollback \ 
    migrate:status 
do 
    alias $subcommand="artisan $subcommand" 
done 

這將讓你免費的一些選項卡完成爲好。

+0

@daviestar ,我投票拒絕你的修改。隨意添加自己的答案,並接受它,如果只有我的答案的一部分適合你。 –

0
artisan() { 
    env DB_HOST=127.0.0.1 \ 

    php artisan "${@}" 
} 

爲Laravel +泊塢用戶的通用功能,可以靈活地更新環境變量與artisan外泊塢窗容器中使用。

感謝@ glenn-jackman指引我走向正確的方向!