Ich versuche, eine Tabelle mit relationalen Daten in einer Laravel 5.5-Anwendung zu seed.Seeding relationale Daten in Laravel beredten Datenbank Seeder/Fabrik - Typ Fehler - Arg 1 sollte beredten Model - Sammlung gegeben
Ich habe diese beiden Tabellen/Modelle:
- Benutzer
- Frage
Auf der app \ User.php Modelldatei; Ich habe folgende hasMany
Beziehung:
public function questions()
{
return $this->hasMany(Question::class);
}
Und hier meine Datenbank/Fabriken/QuestionFactory.php
<?php
use Faker\Generator as Faker;
$factory->define(App\Question::class, function (Faker $faker) {
static $user_id;
return [
'user_id' => $user_id,
'subject' => $faker->sentence(15),
'body' => $faker->paragraph(3)
];
});
und meine Datenbank/Fabriken/UserFactory.php
<?php
use Faker\Generator as Faker;
$factory->define(App\User::class, function (Faker $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('123456'),
'remember_token' => str_random(10),
];
});
Angesichts der oben genannten; Ich versuche, alles in meiner Blinddaten Seeder wie diese zu verwenden:
class DummyDataSeeder extends Seeder
{
public function run()
{
// Seed dummy users
factory(App\User::class, 10)->create()->each(function($user)
{
// With dummy questions
$user->questions()->save(factory(App\Question::class, 3)->make());
});
}
}
The goal was to create 10 dummy users, and for each users to have 3 questions each.
Wenn ich die Datenbank mit dem obigen Setup-Samen; Ich erhalte die folgende Fehlermeldung:
[Symfony\Component\Debug\Exception\FatalThrowableError] Type error: Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, instance of Illuminate\Database\Eloquent\Collection given, called in C:\xampp\htdocs\myapp.local\database\seeds\DummyDataSeeder.php on line 18
Ich denke Statt 'save' Sie verwenden müssen, um' saveMany' auf mehrere Datensätze für jede iteration.Check meine Antwort unten. –