使用env变量prepend命令 - 包括子命令

时间:2017-02-16 16:01:03

标签: php bash laravel docker

我需要在Laravel的php artisan migrate命令中添加一个环境变量,以便与docker一起使用,例如:

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

有没有办法可以编写函数来为所有这些'子'命令添加变量呢?

2 个答案:

答案 0 :(得分: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

这也可以让你免费获得一些标签。

答案 1 :(得分:0)

artisan() {
  env DB_HOST=127.0.0.1 \

  php artisan "${@}"
}

Laravel + Docker用户的通用函数可以灵活地更新环境变量,以便与artisan外部docker容器一起使用。

感谢@ glenn-jackman指出我正确的方向!