为什么这台Laravel播种机会失败?
我有这个简单的播种机功能;我已经编写了工厂,它们很好,所有的模型都正确地定义了关系。它应该创建5个用户,然后在每个用户上添加一张图片为什么这台Laravel播种机会失败?,laravel,eloquent,Laravel,Eloquent,我有这个简单的播种机功能;我已经编写了工厂,它们很好,所有的模型都正确地定义了关系。它应该创建5个用户,然后在每个用户上添加一张图片 $this->command->info('Creating sample users...'); $usersCollection = factory(App\Models\User::class, 5)->create(); foreach ($usersCollection as $user) { $this->comm
$this->command->info('Creating sample users...');
$usersCollection = factory(App\Models\User::class, 5)->create();
foreach ($usersCollection as $user) {
$this->command->info('Adding pictures to user ' . $user->ID . '...');
$user->pics()->create(
factory(App\Models\Pic::class, 1)->make()->toArray()
);
$this->command->info('Done with user ' . $user->ID . '...');
};
然而,它只是添加了一个用户,然后在尝试添加图片时遇到了困难。在“添加图片”消息之后,它会挂起很长很长时间,并最终生成此错误消息:
传递给Illumb\Database\Grammar::parameterize()的参数1必须是数组类型,int给定,在第866行的/Users/ericmueller/Sync/Development/dn2/vendor/larvel/framework/src/illumb/Database/Query/Grammars/Grammar.php中调用
当我查看数据库时,我看到5个用户,但在Pics表中什么都没有
我做错了什么
奖金问题-我最终会在DB中植入大约500个用户,每个用户最多有5张图片。这是构造播种机代码的最佳方法吗?请尝试这样做,因为我有点不明白为什么要将类型为Pic
的对象转换为数组
$users = factory(App\Models\User::class, 5)->create();
$users->each(function ($user) {
$user->pics()->save(
factory(App\Models\Pic::class)->make()
);
});
由于我们不确切知道您的$user->pics()函数的作用,
我有两个不同的选择:
选项1:
您将需要调用first()
方法,否则您将得到一个集合而不是一个实例
选项2:
创建一个Pic
实例并设置user\u id
,然后保存它。如果这样使用它会发生什么:工厂(App\Models\Pic::class,1)->make()->first()->toArray()
factory(App\Models\Pic::class, 1)->make()->first()->toArray();
$pic = factory(App\Models\Pic::class, 1)->make()->first();
$pic->user_id = $user->id;
$pic->save();