我正在尝试使用外键为表播种,但我一直坚持如何告诉模型从已经存在的数据中随机提取值。
模型工厂
$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,
];
});
种子
供应商TableSeeder
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);
我在设备表之前播种供应商表,并希望从现有供应商中填充随机供应商 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
作为供应商列的字符串插入。我试图弄清楚如何从现有的供应商那里获得它。