我的Laravel 5.2应用程序中有以下结构:
用户:编号名字...
发布:编号标题身体user_id (FK)
评论:编号身体user_id (斐济)post_id (FK)
我想创建几个用户(20),为每个用户随机数量的帖子,对每个帖子,随机数量的评论(即使是固定数量也可以)。
我可以创建用户并为每个帖子分配帖子,但无法为每个帖子分配评论:我有这个:
factory(App'User::class, 20)->create()->each(function($u) {
$u->posts()->saveMany(factory(App'Post::class, 5)->make();
});
我发现了一些东西但没有工作:
factory(App'Comment::class, 100)->create()->each(function($u) {
$u->user()->sync(
App'User::all()->random(3)
);
});
注意:我使模型之间的关系是这样的:用户有很多帖子,用户有很多评论,帖子有很多评论,评论属于发布,评论属于用户
你可以通过使用你的工厂来嵌套你的下一个孩子等来实现这一点。
您具有某些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,
]);
});
});
create
方法中的数组将覆盖ModelFactory.php
中设置的值