如何让多级工厂进行数据库播种工作

时间:2015-07-10 04:24:02

标签: php laravel-5

所以我试图让工厂设置为允许随机播种测试数据库。我希望能够创建一大堆用户,然后创建一堆房间,然后将评论发布到房间。

这就是我所拥有的:

factory('App\User', 5)->create()->each(function($u) {
    $u->rooms()->save(factory('App\Room', 10)->create()->each(function($p) {
        $p->posts()->save(factory('App\Post', 10)->make());
    }));
});

我收到以下错误:

Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, instance of Illuminate\Database\Eloquent\Collection given

我认为错误意味着它在尝试创建帖子之前没有创建房间?

1 个答案:

答案 0 :(得分:6)

也许有点晚了,但你必须拨打 saveMany(...)而不是保存(...)Eloquent documentation

中所述

确实,你想要创建多个对象(factory('App\Room', 10)->create()factory('App\Post', 10)->make()),它们返回一个Collection(简言之,一个对象数组)

特别感谢朋友,他提醒我RTM ^^