我已经进入了 Laravel 的奇妙世界,我目前正在研究用假数据植入数据库以进行测试。
我有几张桌子要使用;项目和故事。
故事表有列;id,name和project_id(这是项目表的 fk)。
我的项目表已经填充了 10 个项目的列表。现在我需要用相关的随机项目填充 100 个故事。我有下面的方法。
public function run()
{
DB::table('stories')->delete();
DB::statement('ALTER TABLE stories AUTO_INCREMENT = 1');
$faker = Faker::create();
foreach(range(1, 100) as $index)
{
Story::create([
'reference' => $faker->numberBetween(1, 9999),
'name' => $faker->sentence(6),
'project_id' => Project::orderBy(\DB::raw('RAND()'))->get()->first()->pluck('id')
]);
}
}
我不知道这是否是做我需要的最佳方式。但是,在执行此代码时,每个故事的 project_id 都设置为 1;第一个项目的 ID。
当我在修补程序中执行以下命令时......它总是返回 1 作为 id。
Project::orderBy(\DB::raw('RAND()'))->get()->first()->pluck('id')
但是当我在修补程序中执行下一个命令时......
Project::orderBy(\DB::raw('RAND()'))->get()->first()
它每次返回一个随机项目。这很奇怪。因为如果 ->pluck() 之前的一切都在工作,那么 pluck() 应该获取收集的项目 id...对吗?这是上面命令返回的内容。
<App\Project #000000000c385908000000000de30942> {
id: 6,
name: "New Bernadetteton",
cover_photo_url: "/uploads/covers/horizon-grass.png",
created_at: "2015-07-08 16:32:15",
updated_at: "2015-07-08 16:32:15" }
请参阅下面的终端窗口屏幕截图以说明我的意思。