W jaki sposób definiujesz klucze obce w fabryce modeli. Na przykład jeśli mam tabeli organizacje, które ma klucz obcy do tabeli krajów, w moim modelu fabryki Mam do określenia wartości obojętne dla identyfikatora kraju następująco:Klucze obce języka Laravel 5.1 w modelu fabryki
$factory->define(App\Organisation::class, function ($faker) {
return [
'name' => $faker->company,
'country_id' => 197,
];
});
W moim stole organizacje siewnika class Robię co następuje, ale obiekt faker nie jest obecny - czy muszę utworzyć nowy obiekt faker w mojej klasie siewnika?
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],
]);
}
}
siewnik Database klasa
class DatabaseSeeder extends Seeder
{
public function run()
{
Model::unguard();
$this->call('CountriesTableSeeder');
$this->call('OrganisationsTableSeeder');
Model::reguard();
}
}
Co najlepszym sposobem definiowania kluczy obcych podczas definiowania modelu fabryki? Czy można pominąć parametr country_id z fabryki modelu i dodać go do klasy siewnika - z dokumentacji wydaje się, że można tylko zastąpić istniejącą wartość zdefiniowaną w fabryce modelu, ale nie można dodać nowej wartości za pośrednictwem klasy siewnika - poprawne mnie, jeśli się mylę?
Problem z rozwiązaniem jest to, że każda "organizacja" będzie miała jeden inny kraj i nigdy nie użyje istniejącego, prawda? –
mmmmh, minęło trochę czasu odkąd napisałem ten kod, ale twoja obserwacja wydaje się słuszna, chociaż tak naprawdę nie obchodziło mnie używanie istniejącego kraju w czasie, kiedy go pisałem. –