我的Laravel 5.2应用程序中有以下结构:
用户: ID 名称 ...
发表: ID 标题 身体 user_id(fk)
注释: ID 身体 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();
});
我发现了一些东西,但没有用:
factory(App\Comment::class, 100)->create()->each(function($u) {
$u->user()->sync(
App\User::all()->random(3)
);
});
注意:我建立了这样的模型之间的关系: 用户有很多帖子, 用户有很多评论, 发表有很多评论, 评论belongsTo Post, 评论belongsTo用户
答案 0 :(得分:1)
您可以通过使用工厂为下一个孩子筑巢等来实现这一目标。
您有一些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