我有一个 belongsTo
comments 表,它是 user
表和 article
表。
如何对表进行播种以使user
和article
外键都完整?
查看各种示例后,我发现您可以为用户播种,然后附加/保存其他模型...
factory(User::class, 100)->create()->each(function ($user) {
$articles = factory(Article::class, 5)->make();
$user->article()->saveMany($articles);
但是如何对带有两个外键的评论做同样的事情呢?
最佳答案
未经测试,但它应该可以工作,或者至少给你一个想法。
在评论的情况下,你可以创建一个像这样的工厂,你将在其中分配外键随机用户和文章:
$factory->define(Comment::class, function (Generator $faker) {
return [
'content' => $faker->paragraph,
'user_id' => User::inRandomOrder()->select('id')->first()->id,
'article_id' => Article::inRandomOrder()->select('id')->first()->id
];
});
请注意,用户和文章记录都必须存在,您才能将它们的 ID 分配给外键。所以要在播种机中使用工厂,您将在插入用户和文章后调用它:
// do the inserts of users and articles, I left this as you show it in the question
factory(User::class, 100)->create()->each(function ($user) {
$articles = factory(Article::class, 5)->make();
$user->article()->saveMany($articles);
});
factory(Comment::class, 50)->create();
关于laravel - 播种具有多个关系的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61838677/