使用envvariablesprepend命令 – 包括子命令
我需要将一个环境variables添加到Laravel的php artisan migrate
命令中,以便与docker一起使用,例如:
env DB_HOST=127.0.0.1 php artisan migrate
我在我的.zshrc
文件中创build了一个函数,如下所示:
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
有没有一种方法可以编写函数,也为所有这些“子”命令添加variables?
我假设你想能够做到这一点: 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
这会让你免费的一些标签完成。
artisan() { env DB_HOST=127.0.0.1 \ php artisan "${@}" }
Laravel + Docker用户的通用函数可以灵活地更新环境variables,以便与docker容器外的artisan
一起使用。
感谢@ glenn-jackman指点我正确的方向!