外部キーを使用してテーブルをシードしようとしていますが、既存のものからランダムに値を取得するようにモデルに指示する方法に行き詰まっています。
モデルファクトリー
$factory->define(App\Vendor::class, function(Faker\Generator $faker) {
return [
'name' => $faker->company,
];
});
$factory->define(App\Device::class, function(Faker\Generator $faker) {
return [
'vendor' => ,
'name' => $faker->company,
'mac_address' => $faker->macAddress,
];
});
種
ベンダーテーブルシーダー
public function run()
{
factory(App\Vendor::class, 150)->create();
}
DeviceTableSeeder
public function run()
{
factory(App\Device::class, 50)->create();
}
データシーダー
$this->call(VendorTableSeeder::class);
$this->call(DeviceTableSeeder::class);
Device テーブルの前に Vendor テーブルをシードし、既存のベンダーからランダムなベンダー ID を入力したいと考えています。
'vendor' => 'factory::App\Vendor'
しかし、私は得ています
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: foreign key constraint fails
factory::App\Vendor
挿入がベンダー列の文字列として挿入しようとしているようです。既存のベンダーから引き抜く方法を見つけようとしています。