我的應用程序需要預先註冊的數據集才能工作。所以我需要在設置應用程序時將它們插入到數據庫中。Laravel:遷移和播種生產數據
Laravel提出了兩種機制:
- Database migrations:「他們讓一個團隊來修改數據庫模式,並保持最新的當前模式的狀態。」
- Database seeding:「Laravel還提供了一種簡單的方法,使用種子類爲測試數據創建數據庫。」
當我閱讀本說明時,這些解決方案似乎都沒有適應。
一個類似的問題是asked on stackoverflow和answered。答案提出通過檢測當前環境中使用的數據庫播種機來填充數據庫:
<?php
class DatabaseSeeder extends Seeder {
public function run()
{
Eloquent::unguard();
if (App::environment() === 'production')
{
$this->call('ProductionSeeder');
}
else
{
$this->call('StagingSeeder');
}
}
}
當然,這種解決方案的工作。但我不確定這是否是正確的方法,因爲通過使用播種器插入數據,您將失去遷移機制提供的所有優點(數據庫提高,回滾...)
我想知道在這種情況下是最佳做法。
在Laravel中,遷移是關於模式管理,而不是數據管理。播種機被用來提供測試數據,但我認爲他們的意圖不是生產數據加載機制。 – warspite
@儘管是這是文檔說的。這就是爲什麼我問這個問題。 – gontard
也許這個軟件包會有幫助https://github.com/slampenny/SmartSeeder –