laravel - 播种具有多个关系的表?

标签 laravel

我有一个 belongsTo comments 表,它是 user 表和 article 表。

如何对表进行播种以使userarticle 外键都完整?

查看各种示例后,我发现您可以为用户播种,然后附加/保存其他模型...

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/

相关文章:

php - Laravel Excel 导入 CSV 加载数据

laravel - 修改通过 docker shell 创建的文件时,是什么导致 "Authentication is needed to run '/bin/dd' as the super user"提示?

php - 如何使用 Livewire Stripe Prebuilt Checkout 修复 CORS 错误

laravel - 我如何使 Laravel 迁移发生变化并使列可为空

AngularJs + Laravel 路由

mysql - Laravel 5 - 找不到 MySQL 存储过程

forms - Laravel selectRange空白选项

apache - 如何安装 Laravel 应用程序以免费虚拟主机?

laravel - 如何创建 Nova 过滤器以按关系过滤资源?

php - Laravel:从数据库中删除时如何处理依赖关系