Wie definieren Sie Fremdschlüssel in einer Modellfabrik? Zum Beispiel, wenn ich eine Tabelle Organisationen habe, die einen Fremdschlüssel für die Länder-Tabelle hat, in meinem Modell Fabrik habe ich einen Dummy-Wert für das Land ID wie folgt zu definieren:Laravel 5.1 Fremdschlüssel in Modellfabrik
$factory->define(App\Organisation::class, function ($faker) {
return [
'name' => $faker->company,
'country_id' => 197,
];
});
In meiner Organisationen Tabelle Seeder Klasse Ich mache folgendes, aber das Faker-Objekt ist nicht vorhanden - muss ich ein neues Faker-Objekt in meiner Seeder-Klasse erstellen?
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],
]);
}
}
Database Seeder Klasse
class DatabaseSeeder extends Seeder
{
public function run()
{
Model::unguard();
$this->call('CountriesTableSeeder');
$this->call('OrganisationsTableSeeder');
Model::reguard();
}
}
Was ist der beste Weg, um die Fremdschlüssel zu definieren, wenn Modellfabriken definieren? Ist es möglich, die country_id aus der Modellfabrik wegzulassen und stattdessen in der Seeder-Klasse hinzuzufügen - aus der Dokumentation scheint es, dass Sie nur einen in der Modellfabrik definierten Wert überschreiben können, aber über die Seder-Klasse keinen neuen Wert hinzufügen können - korrekt ich, wenn ich falsch liege?
Das Problem mit Diese Lösung besteht darin, dass jede "Organisation" ein anderes Land hat und niemals ein bestehendes verwendet, richtig? –
mmmmh, es ist eine Weile her, seit ich diesen Code geschrieben habe, aber deine Beobachtung scheint korrekt zu sein, obwohl es mir nicht wirklich wichtig war, ein existierendes Land zu dem Zeitpunkt zu benutzen, als ich es schrieb. –