在研究數據庫搜索器時,通常會在Seeder類中看到使用DB::table('my_table')->insert(['column' => 'value'])
的人。我想知道爲什麼我應該使用而不是MyModel::*
來執行這樣的任務,這種明顯的約定背後的原因。DB :: table Vs雄辯模型 - Laravel數據庫種子
2
A
回答
4
最重要的是,因爲使用DB
插入,您可以一次執行多個插入操作。特別是在播種許多大型表格時,這比每插入一次查詢要快得多。
http://laravel.com/docs/master/queries#inserts
DB::table('users')->insert([
['email' => '[email protected]', 'votes' => 0],
['email' => '[email protected]', 'votes' => 0]
]);
你也不需要加載雄辯類或任何隨之而來的大頭。再次,播種數千行,創建數千個Eloquent對象......這會佔用大量內存。
最後,如果確實發生了錯誤或問題與雄辯模型,您的種子仍然會工作。
有一些缺點。例如,如果你的一個Eloquent模型覆蓋了一個setter在保存之前操縱和格式化數據,那麼你就失去了這種便利。
實際上,它適用於任何帶有$ timestamps的模型;與DB
插入,你將不得不手動設置created_at
和updated_at
時間戳。但是對於播種機,您可能想要模擬那些項目是在幾天或幾個月或幾年前創建的,在這種情況下,您不會想要自動設置這些時間戳。
但實際上,很多人都使用model factories。如果你想要使用你的setter,或者自動分配關係,並基本上利用雄辯提供的一切優勢,那麼他們非常適合用於播種。通過我提到的效率折衷,但有時候這是值得的。
相關問題
- 1. Laravel雄辯模型櫃檯
- 2. 將數組以雄辯的模型Laravel
- 3. Laravel /雄辯:模型計算數據庫字段如何
- 4. Laravel Sum列數據庫雄辯
- 5. 雄辯Laravel加入模型5.3
- 6. 雄辯模型AES_ENCRYPT加密
- 7. 雄辯循環,並加入到DB - Laravel /雄辯
- 8. 雄辯模型和模型的區別?
- 9. Laravel將DB查詢轉換爲雄辯
- 10. Laravel模擬與嘲笑雄辯模型
- 11. Laravel雄辯VS內置數據庫訪問
- 12. Laravel雄辯的關係多個模型
- 13. Laravel /雄辯:從模型內驗證
- 14. Laravel雄辯5.4模型事件
- 15. 雄辯laravel模型空id編號
- 16. Laravel 5 - 雄辯模型 - 系列3表
- 17. 在Laravel無法訪問雄辯模型
- 18. Laravel 5雄辯模型結果
- 19. 遞歸雄辯模型
- 20. 定義雄辯型號Laravel
- 21. 雄辯型號不Laravel
- 22. Laravel:加入雄辯模特
- 23. laravel雄辯模式保存?
- 24. 獲取數據Laravel雄辯模型嵌套JSON陣列關係
- 25. Laravel - 雄辯的子查詢選擇與模型場景無關
- 26. 將數據庫關係更改爲Laravel雄辯
- 27. Laravel雄辯:存儲與相關的新模型的新模型
- 28. 使用laravel雄辯的mysql子查詢
- 29. Laravel - 用雄辯
- 30. Laravel scopeSearch雄辯
我用關於模型工廠的註釋更新了我的答案。我更喜歡簡單的種子,因爲它們速度很快,但模型工廠是播種時使用雄辯的好方法 – andrewtweber