首页 > 解决方案 > 数据库播种 laravel 创建 50 个用户并为每个用户附加一个关系

问题描述

我有用

factory(App\User::class, 50)->create()->each(function ($user) {
        $user->posts()->save(factory(App\Post::class)->make());
    });

DatabaseSeeder 中的内部运行函数

当我执行php artisan db:seed 输出如下

Seeding: UsersTableSeeder

   BadMethodCallException  : Call to undefined method App\User::posts()

  at /home/ahmed/myDesgin/laravelApplication/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:50
    46|      * @throws \BadMethodCallException
    47|      */
    48|     protected static function throwBadMethodCallException($method)
    49|     {
  > 50|         throw new BadMethodCallException(sprintf(
    51|             'Call to undefined method %s::%s()', static::class, $method
    52|         ));
    53|     }
    54| }

  Exception trace:

  1   Illuminate\Database\Eloquent\Model::throwBadMethodCallException("posts")
      /home/ahmed/myDesgin/laravelApplication/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:36

  2   Illuminate\Database\Eloquent\Model::forwardCallTo(Object(Illuminate\Database\Eloquent\Builder), "posts", [])
      /home/ahmed/myDesgin/laravelApplication/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1618

  Please use the argument -v to see more details.

这个问题的原因是什么以及如何解决它

标签: phplaravel

解决方案


我不确定它是否会帮助你。但是您可以尝试使用以下关系创建用户及其虚拟帖子:

factory(User::class, 10)->create()->each(function ($user) {
    $user->posts()->saveMany(factory(Posts::class, 5)->make());
});

推荐阅读