我有一個大型項目,每個客戶都有自己獨立的數據庫。爲了實現這一目標,我們使用自定義的.env
加載程序,通過檢查客戶子域(每個客戶都是唯一的)加載每個客戶.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),但是,圖像的幾十個客戶,這不會是可行的。
您可能對我很久以前寫過的東西感興趣 - https://github.com/mnabialek/laravel-multi-config/tree/develop和https://github.com/mnabialek/laravel-multi -domain/tree/develop(目前還未測試) –
感謝您的評論;儘管這個結果與我所尋找的「半遠」有關。感謝分享! – Marcus