Hinzufügen von Beziehungen zu Laravel Factory Model
Ich versuche, eine Beziehung zu einem Factory-Modell hinzuzufügen, um einige Datenbank-Seeding-Vorgänge wie folgt durchzuführen. Hinweis: Ich versuche, jedem Benutzer 2 Posts hinzuzufügen.
public function run()
{
factory(App\User::class, 50)->create()->each(function($u) {
$u->posts()->save(factory(App\Post::class, 2)->make());
});
}
Aber es wirft den folgenden Fehler
Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::s
ave() must be an instance of Illuminate\Database\Eloquent\Model, instance
of Illuminate\Database\Eloquent\Collection given
Ich denke, es hat etwas mit dem Speichern einer Sammlung zu tun. Wenn Sie den Code neu schreiben, indem Sie jedes Fabrikmodell für den Post separat aufrufen, scheint er zu funktionieren. Offensichtlich ist dies nicht sehr elegant, denn wenn ich 10 beibehalten oder an jeden Benutzer posten möchte, muss ich 10 oder Zeilen dekalieren, es sei denn, ich verwende eine Art for-Schleife.
public function run()
{
factory(App\User::class, 50)->create()->each(function($u) {
$u->posts()->save(factory(App\Post::class)->make());
$u->posts()->save(factory(App\Post::class)->make());
});
}
* AKTUALISIERT
Gibt es eine Möglichkeit, die Modellfabrik auf einer dritten Ebene zu nisten?
public function run()
{
factory(App\User::class, 50)
->create()
->each(function($u) {
$u->posts()->saveMany(factory(App\Post::class, 2)
->make()
->each(function($p){
$p->comments()->save(factory(App\Comment::class)->make());
}));
});
}