You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建关联其他模型MySQL表的Laravel Factory?

Post 模型 Factory 实现代码

假设你使用的是 Laravel 框架,以下是满足需求的 Post Factory 实现:

<?php

namespace Database\Factories;

use App\Models\Community;
use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;

class PostFactory extends Factory
{
    protected $model = Post::class;

    public function definition()
    {
        // 从 communities 表随机获取一条记录的 ID
        $randomCommunityId = Community::inRandomOrder()->value('id');

        return [
            'community_id' => $randomCommunityId,
            // 复用同一个随机社区 ID 作为 user_id,若需要不同的随机值,可单独再查一次
            'user_id' => $randomCommunityId,
            // 按需添加其他字段的填充规则
            'title' => $this->faker->sentence(),
            'content' => $this->faker->paragraph(3),
        ];
    }
}

补充说明

  • 如果需要 user_id 和 community_id 是 communities 表中不同的随机ID,只需把 user_id 的赋值改成单独查询:
    'user_id' => Community::inRandomOrder()->value('id'),
    
  • 确保 communities 表中已有数据,否则 inRandomOrder()->value('id') 会返回 null,导致填充失败。可以在数据库填充器(Seeder)中先创建社区数据,再创建帖子数据。

内容的提问来源于stack exchange,提问作者Cam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 00:15:30