最近,我一直試圖使用Laravel種子模型工廠和Faker來種子我的數據庫。用模型工廠,一對一和一對多關係定義Laravel外鍵而不會創建不必要的模型
對於簡單的模式,它只是一件輕而易舉的工作:)。然而,其中涉及外鍵的複雜的數據庫模式和表之間的關係工作時,我遇到了幾個問題:
- 一對一
- 一對多
- 多對多
...就像鏈接中描述的那樣: Laravel 5.1 foreign keys in model factory。
在這個話題中,official documentation建議運行數據庫種子是這樣的:
public function run()
{
factory(App\User::class, 50)->create()->each(function ($u) {
$u->posts()->save(factory(App\Post::class)->make());
});
}
...但有一個問題,這個解決方案:與許多數據庫表和運行許多種工作時(以它們之間有很多關係),所以很常見使用這種方法創建許多不必要的模型。例如,如果我們在上面的例子之前運行PostsTableSeeder.php,那麼所有這些帖子都不會被鏈接到用戶,並且永遠不會被用於測試和開發中...
因此,搜索處理這種情況的方式,我已經找到了一個適用於我的功能性解決方案,並避免了那些'孤兒'模型的不必要的創建...
我想與大家分享,所以它只是解釋在答案:)。
我不認爲你可以建議,實現了許多相同的的最佳途徑很多關係?我有用戶和案例與User_Cases表來解決多對多。我試圖寫一個工廠來播種我的數據庫。 – Kenilik
我在播種機內獲得**多對多**的方法,而不是工廠......在播種機中,您需要簡單地檢索兩個模型(*用戶*和*個案*),並通過其中一個指派另一個模型(s)在每種情況下。 – andcl