【发布时间】:2017-04-11 06:39:06
【问题描述】:
最近我一直在尝试通过 Model Factories 和 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,那么所有这些帖子都不会链接到用户,并且永远不会用于测试和开发......
所以在寻找处理这种情况的方法时,我想出了一个适合我的功能性解决方案,并避免不必要地创建那些“孤儿”模型......
我想和大家分享一下,所以只是在答案中解释了:)。
【问题讨论】:
标签: php laravel laravel-5 faker laravel-seeding