Spi*_*dey 6 php factory model laravel
我的 Laravel 5.2 应用程序具有以下结构:
用户: id 姓名...
帖子:id 标题正文 user_id (fk)
评论:id body user_id (fk) post_id (fk)
我想创建几个用户(20),为每个用户创建随机数量的帖子,并为每个帖子创建随机数量的评论(即使是固定数量也可以)。
我可以创建用户并为每个用户分配帖子,但我无法为每个帖子分配评论:我有这个:
factory(App\User::class, 20)->create()->each(function($u) {
$u->posts()->saveMany(factory(App\Post::class, 5)->make();
});
Run Code Online (Sandbox Code Playgroud)
我发现了一些东西但没有用:
factory(App\Comment::class, 100)->create()->each(function($u) {
$u->user()->sync(
App\User::all()->random(3)
);
});
Run Code Online (Sandbox Code Playgroud)
注意:我在模型之间建立了这样的关系:用户有很多帖子,用户有很多评论,帖子有很多评论,评论属于帖子,评论属于用户
您可以通过使用工厂来嵌套您的下一个孩子等来实现这一点。
您具有被某些人引用的关系,fk因此要获得正确的“fk”值,您可以执行以下操作:
factory('App\Users', 123)->create()->each(function ($u) {
factory('App\Posts', 1)->create([
'user_id' => $u->id,
])->each(function ($e) use ($u) {
factory('App\Comments', 10)->create([
'user_id' => $u->id,
'post_id' => $e->id,
]);
});
});
Run Code Online (Sandbox Code Playgroud)
该方法中的数组create将覆盖您中设置的值ModelFactory.php