我想制作一个包含用户和评论的帖子播种器,如 laravel 文档中关系部分所述 https://laravel.com/docs/5.5/database-testing
$users = factory(App\User::class, 3)
->create()
->each(function ($u) {
$u->posts()->save(factory(App\Post::class)
->create()
->each(function($p){
$p->comments()->save(factory(App\Comment::class,5)
->create()
->each(function($c){
$c->user()->save(factory(App\User::class)
->make()
);
})
);
})
);
}
);
预期输出是有 3 位用户发表帖子,每人有 5 条评论。
但是发生了错误:
In Builder.php line 2459: Call to undefined method Illuminate\Database\Query\Builder::save()
最佳答案
试试这个:
$users = factory(App\User::class, 3)
->create()
->each(function ($u) {
$u->posts()->save(factory(App\Post::class)->make())
->each(function($p){
$p->comments()->save(factory(App\Comment::class,5)->make())
->each(function($c){
$c->user()->save(factory(App\User::class)
->make()
);
})
);
})
);
}
);
常规foreach的解决方案
$users = factory(App\User::class, 3)->create();
foreach($users as $user){
$post = $user->posts()
->create(factory(App\Post::class)->make()->toArray());
$post->comments()
->createMany(
factory(App\Comment::class, 5)
->make(['user_id' => factory(App\User::class)
->create()->id])->toArray());
}
关于php - 与 Laravel faker 的嵌套关系 - laravel seeder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47775412/