【发布时间】:2019-11-14 03:07:42
【问题描述】:
在一个 laravel 5.8 应用程序中,我想为用户和产品表播种。用户和产品之间存在这样的关系
User.php 模型(用户可以拥有一个或多个产品)
public function products()
{
return $this->hasMany(Product::class, 'user_id');
}
Product.php 模型(一个产品可以属于一个或多个用户)
public function users()
{
return $this->belongsToMany(User::class);
}
我正在尝试使用下面的UsersTableSeeder 同时为用户表和产品表播种
public function run()
{
factory(App\User::class, 3)->create()->each(function ($user) {
$user->products()->save(factory(App\Product::class, 3)->make());
});
}
“DatabaseSeeder”看起来像这样
public function run()
{
$this->call(UsersTableSeeder::class);
}
当我运行命令php artisan db:seed 时,只有用户表被播种,我得到这个错误
Symfony\Component\Debug\Exception\FatalThrowableError : 传递给 Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() 的参数 1 必须是 Illuminate\Database\Eloquent\Model 的实例, Illuminate\Database\Eloquent\Collection 给定,在第 15 行的 C:\Users\Elomena\Projects\Clients\Pramopro\database\seeds\UsersTableSeeder.php 中调用
这是第 15 行 $user->products()->save(factory(App\Product::class, 3)->make());
我真的不明白为什么我会收到这个错误,因为我遵循了 https://laravel.com/docs/5.8/seeding#using-model-factories 中的确切内容
请问应该如何进行人际关系播种?
【问题讨论】:
标签: php laravel laravel-5.8