如何在模型工厂中定义外键?例如,如果我有有一个外键国家表组织表,在我的模型厂我有如下定义为国家ID的虚拟值:Laravel 5.1模型工厂的外键
$factory->define(App\Organisation::class, function ($faker) {
return [
'name' => $faker->company,
'country_id' => 197,
];
});
在我的组织表播种机我正在做下面的工作,但faker对象不存在 - 是否需要在我的播种器类中创建一个新的faker对象?
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并将其添加到seeder类中 - 从文档看来,您似乎只能覆盖模型工厂中定义的现有值,但不能通过播种器类添加新值 - 正确我如果我错了?
的与问题这个解决方案是,每个“组织”将有一个不同的国家,它不会使用现有的国家,对吧? –
mmmmh,自从我写这段代码以来已经有一段时间了,但你的观察看起来是正确的,尽管我在写代码的时候并不在意使用现有的国家。 –