【发布时间】:2016-04-21 07:15:07
【问题描述】:
我有一个大型项目,每个客户都有自己独立的数据库。为了让它工作,我们使用自定义的.env-loader,通过检查客户子域(每个客户唯一)加载每个客户.env。
但是,这当然不适用于工匠命令。例如,当我想迁移时,我需要一次迁移所有数据库。所以我设置了一个 Artisan 命令来获取 .env 文件并循环访问它们,然后调用默认的 artisan migrate。但它没有按预期工作。
我什么都试过了;例如:
$dotenv = new Dotenv('/env', '.test.env');
$dotenv->overload();
还有:
app()->useEnvironmentPath('/env');
app()->loadEnvironmentFrom('.test.env');
甚至:
config('database.connections.mysql.database', 'test_database');
只要我运行$this->call('migrate');,应用程序就会默认为默认.env,并在运行时忽略所有自定义。有谁知道我如何重载数据库的迁移命令选择?
注意:我知道我可以在config/database.php 中手动设置多个连接(例如:Overriding Default Laravel database configuration for artisan migrate commands),但是,如果要创建几十个客户,这将是不可行的。
【问题讨论】:
-
你可能对我不久前写的东西感兴趣 - github.com/mnabialek/laravel-multi-config/tree/develop 和 github.com/mnabialek/laravel-multi-domain/tree/develop(目前都没有测试)
-
感谢您的评论;尽管结果与我所寻找的“半远”。不过还是谢谢分享!
标签: laravel laravel-5.2