我是 Laravel 4 的新手,在我的本地主机中运行它。我想知道如何让 artisan 在每次执行迁移命令时跳过询问
Do you really wish to run this command?
的问题?我只想立即执行命令而不输入 y
。并且也无需在迁移命令末尾添加 --force
。
我知道提示在制作中非常重要,但我发现它有点烦人,尤其是当你在教程中时。我只是想关掉它以使生活更轻松。
任何帮助将不胜感激。
如果您将环境设置为local,您将不会收到警告问题,因为只有当 Laravel 检测到您处于生产时才会显示警告问题,错误地运行迁移可能会很危险。您只需在
bootstrap/start.php
文件中添加以下内容即可:
$env = $app->detectEnvironment(array(
// The array value should be your hostname
'local' => array('your-machine-name'),
));
上面的内容将允许 Laravel 在检测到您的计算机主机名与您指定的主机名匹配时将环境设置为 local,从而避免显示该消息。
有关配置环境以及从中获得的优势的更多信息,请阅读 Laravel 环境配置文档。
为博格丹的回答和评论添加更多内容。
如果您不熟悉 Laravel 中环境的概念,它可以指定特定于您的应用程序运行环境的不同配置。例如,您的本地环境中将拥有与实时服务器(生产环境)不同的数据库凭据.
因此,您不应该使用
'local' => array(gethostname())
的原因之一是,无论您在何处运行(本地计算机、测试环境或生产环境),这都会使您的环境变得 local
。
这是确定环境的首选方法
$env = $app->detectEnvironment(function() {
return getenv('APP_ENV') ? : 'production';
});
因此,除非您在 VHOST 文件中设置了环境变量,否则它将默认为生产环境。
但是由于您无论如何都无法指定环境变量,所以我建议您坚持使用 Bogdan 的解决方案。
对于 docker 产品。部署,这是为了第一次运行
artisan migrate
而添加的。
BASEDIR="/foo/bar/storage"
if [ ! -f "$BASEDIR/.artisan_init" ]; then
# ...
{ printf "yes\n"; } | ./artisan migrate
date -I > "$BASEDIR/.artisan_init"
# ...
fi
如果有多个问题需要回答,您可以堆积答案:
{ printf "yes\n"; printf "foo\n"; printf "bar\n"; } | ./artisan migrate