相关疑难解决方法(0)

在Laravel工厂模型中添加关系

我正在尝试添加一个工厂模型的关系来做一些数据库种子,如下所示 - 注意我正在尝试为每个用户添加2个帖子

public function run()
{
   factory(App\User::class, 50)->create()->each(function($u) {
         $u->posts()->save(factory(App\Post::class, 2)->make());
   });
}
Run Code Online (Sandbox Code Playgroud)

但它抛出以下错误

Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::s  
ave() must be an instance of Illuminate\Database\Eloquent\Model, instance 
of Illuminate\Database\Eloquent\Collection given
Run Code Online (Sandbox Code Playgroud)

我认为它与保存集合有关.如果通过分别调用帖子的每个工厂模型重新编写代码,它似乎工作.显然这不是很优雅,因为如果我想坚持10或发布给每个用户,那么我必须decalare 10或行,除非我使用某种for循环.

public function run()
{
   factory(App\User::class, 50)->create()->each(function($u) {
     $u->posts()->save(factory(App\Post::class)->make());
     $u->posts()->save(factory(App\Post::class)->make());
   });
}
Run Code Online (Sandbox Code Playgroud)

*更新*

有没有什么方法可以将模型工厂嵌套到第3层?

public function run()
{
   factory(App\User::class, 50)
       ->create()
       ->each(function($u) {
           $u->posts()->saveMany(factory(App\Post::class, 2)
                    ->make()
                    ->each(function($p){
                          $p->comments()->save(factory(App\Comment::class)->make());
          }));
   });
}
Run Code Online (Sandbox Code Playgroud)

factory relationship laravel-5.1

13
推荐指数
4
解决办法
9070
查看次数

标签 统计

factory ×1

laravel-5.1 ×1

relationship ×1