我一直認爲遷移是創建/改變表格的結構。但是,我需要更新我們的實時數據庫中的值。遷移是否是正確的方式 - 或者我應該運行自己的SQL?應該使用Laravel遷移來更改實時列值嗎?
回答
遷移只應用於數據庫模式。播種機只能用於測試數據。如果您要更改記錄的實際內容,則應該使用代碼手動執行此操作,或者使用您自己的SQL執行此操作。
從Laravel文檔:
在播種https://laravel.com/docs/5.3/seeding:
Laravel包括使用種子類測試數據播種數據庫的一個簡單方法。
在遷移https://laravel.com/docs/5.3/migrations:
遷移就像版本控制你的數據庫,讓你的團隊可以輕鬆地修改和共享應用程序的數據庫模式。
儘管如此,聽起來並不像它將成爲測試數據。我認爲在某些情況下,對現有行的自動更新不合適。例如,如果您將用戶密碼設置爲'可空',那麼將'UPDATE users SET password = NULL'(其中password =''')放在遷移中可能是適當的。 – ceejayoz
種子的一種優雅的方式是使用Laravel的Excel - http://www.maatwebsite.nl/laravel-excel/docs
一個例子就是這個(運行中的功能)
Excel::load(database_path('seeds/csv/your_seed_info.csv'), function($reader) {
// Getting all results
$results = $reader->get();
foreach ($results as $item) {
$comp = Model::create([
'field1' => $item->field1,
'field2' => $item->field2,
....
'fieldn' => $item->fieldn,
]);
}
});
確保把這個頂部 use Maatwebsite\Excel\Facades\Excel;
這是一個有點基於意見,但我認爲一些更新到現有行適合於遷移。舉個例子:
Schema::table('users', function($table) {
// make passwords nullable for folks who use SSO
$table->string('password')->nullable()->change();
});
User::where('password', '')->update(['password' => NULL]);
因爲遷移需要調整任何現有數據,以適應新的模式這將是適當的。這是遷移的一部分 - 播種機沒有意義,手動查詢可能會被其他開發人員或特定環境忽略/遺忘。
- 1. 使用遷移更新列Laravel 5.4
- 2. 我應該使用遷移來創建文件夾嗎?
- 3. 通過遷移添加DATETIME列?我應該使用宏嗎?
- 4. Rails遷移和列更改
- 5. Laravel 5. *修改列與遷移
- 6. 使用遷移更改表列的默認值
- 7. 我應該遷移到msqli嗎?
- 8. 應該使用unique_ptr來更輕鬆地實現「移動」語義?
- 9. 如何改變在laravel 5.3現有的表列使用遷移
- 10. Laravel遷移將列類型從varchar更改爲longText
- 11. 遷移更新Laravel 5
- 12. Laravel遷移陣列類型
- 13. 我應該在遷移中更新數據庫信息嗎?
- 14. 遷移SSAS更改
- 15. 何時應該運行lobos遷移?
- 16. 點擊菜單時,我應該使用iframe來更改div的包含嗎?
- 17. 下實時遷移
- 18. 更改使用實體框架的核心遷移主鍵
- 19. 如何遷移cassandra集羣列更改
- 20. 如何遷移更改列類型?
- 21. Rails的遷移,更改:id列型
- 22. Laravel 5.3遷移
- 23. 遷移Laravel包
- 24. 我應該更新Laravel版本嗎?
- 25. Laravel SPA應該使用CSRF令牌來保證安全嗎?
- 26. 遷移期間更新列值時的空值
- 27. 更改數據庫列的排序規則在laravel遷移中不起作用
- 28. 如何使用遷移更改Ecto模型中的列名稱?
- 29. 在JavaFX中更改場景時應該更改控制器嗎?
- 30. 導軌遷移更改默認值與新行字符列
也許種子? https://laravel.com/docs/5.3/seeding#writing-seeders – rad11
@ rad11我原本以爲 - 但在文檔中,它特別聲明種子是爲_test_數據。這就是爲什麼我認爲移民更容易。你怎麼看? – Shane
種子用於測試或「默認」數據,並且遷移是針對結構的,因此從我的角度來看,您應該運行自己的sql請求 – sam12