如何创建关联其他模型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
相关产品推荐
相关产品推荐

