【发布时间】:2015-12-02 05:27:30
【问题描述】:
如何在模型工厂中定义外键。例如,如果我的组织表具有国家表的外键,则在我的模型工厂中,我必须为国家 ID 定义一个虚拟值,如下所示:
$factory->define(App\Organisation::class, function ($faker) {
return [
'name' => $faker->company,
'country_id' => 197,
];
});
在我的组织表播种器类中,我正在执行以下操作,但伪造者对象不存在 - 我是否需要在我的播种者类中创建一个新的伪造者对象?
use Illuminate\Database\Seeder;
class OrganisationsTableSeeder extends Seeder
{
public function run()
{
$countryIds = Country::lists('id')->all();
factory('App\Organisation', 3)->create([
// override factory default
'country_id' => $faker->randomElement[$countryIds],
]);
}
}
数据库种子类
class DatabaseSeeder extends Seeder
{
public function run()
{
Model::unguard();
$this->call('CountriesTableSeeder');
$this->call('OrganisationsTableSeeder');
Model::reguard();
}
}
在定义模型工厂时定义外键的最佳方法是什么?是否可以从模型工厂中省略 country_id 并将其添加到播种器类中-从文档中看来,您只能覆盖模型工厂中定义的现有值,但不能通过播种器类添加新值-正确如果我错了?
【问题讨论】:
标签: foreign-keys laravel-5.1 seeding faker