php - 与 Laravel faker 的嵌套关系 - laravel seeder

标签 php laravel factories eloquent-relationship

我想制作一个包含用户和评论的帖子播种器,如 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/

相关文章:

MySQL 日期介于月份和年份之间

java - 在大型程序中管理隐私

php - 在服务器端验证curl CURLOPT_HTTPHEADER请求

javascript - JSON 响应不是来自 php 的对象

laravel - 如何在 Laravel 组路由中使用动态变量?

php - 在 laravel Controller 中包含一个文件?

php - 在 Laravel 中使用 PHP Faker 在使用工厂播种数据库时生成 "unique with"条目

ruby-on-rails - 是否有任何 Rails 工厂可以帮助我测试非持久性模型?

php - SQL 查询失败

php - 尝试调整 PHP echo 的输出