私は Laravel の素晴らしい世界に入りました。現在、テスト用に偽のデータをデータベースにシードすることを検討しています。
操作したいテーブルがいくつかあります。プロジェクトとストーリー。
stories テーブルには列があります。id、name、およびproject_id (projects テーブルの 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。
次のコマンドをtinkerで実行すると... IDとして常に1が返されます。
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" }
以下のターミナル ウィンドウのスクリーンショットを参照して、私の意味を説明してください。