Gegeben gegeben, dass ich die folgenden Tabellen:Seeding Pivot-Tabelle mit Laravel 5.5 Modellfabrik - mb_strtolower() erwartet Parameter 1 sein String, array
- Benutzer
- Fragen
- Tags
- QUESTION_TAG
my pivot table with two fields: question_id & tag_id
und meine App \ Frage Modell hat die folgenden Beziehungen:
class Question extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
public function tags()
{
return $this->hasMany(Tag::class);
}
}
ich die folgenden Fabriken erstellt haben:
Datenbank/Fabriken/UserFactory.php
$factory->define(App\User::class, function (Faker $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('123456')
];
});
Datenbank/Fabriken/QuestionFactory.php
$factory->define(App\Question::class, function (Faker $faker) {
static $user_id;
return [
'user_id' => $user_id,
'subject' => $faker->sentence(15),
'body' => $faker->paragraph(10)
];
});
Datenbank/Fabriken/TagFactory.php
$factory->define(App\Tag::class, function (Faker $faker) {
return [
'name' => str_slug($faker->words(mt_rand(1, 2))),
'description' => $faker->sentence()
];
});
Ich habe versucht, sie alle zusammen in meinem Blinddaten Seeder wie diese 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()->saveMany(factory(App\Question::class, 10)->make()->each(function($question)
{
// With dummy tags
$question->tags()->sync(factory(App\Tag::class, 3)->make());
}));
});
}
}
Wenn ich die Seeder laufen, bekomme ich die folgende Fehler:
[ErrorException] mb_strtolower() expects parameter 1 to be string, array given
Ist dies in der Modellfabrik nicht möglich? Muss ich einen anderen Ansatz verwenden?
Run Samen mit 'php Handwerker db: Samen -vvv' weitere Informationen über den Fehler zu sehen. Oder überprüfen Sie 'storage/logs/laravel.log' – ljubadr
Danke, die Frage wird aktualisiert. – Latheesan
Wenn Sie eine neue Frage haben, tun Sie dies bitte, anstatt sie zu ändern, nachdem die Leute geantwortet haben. –