Laravel 5.5 응용 프로그램에서 관계형 데이터로 테이블을 시드하려고합니다.Laravel eloquent 데이터베이스 시더/팩토리에서 관계형 데이터 시드하기 - 유형 오류 - Arg 1은 Eloquent Model - Collection으로 제공되어야합니다.
나는이 두 테이블/모델이 있습니다
- 사용자를
- 질문 응용 프로그램 \ User.php 모델 파일에
; 나는 다음과 같은 hasMany
관계가 있습니다
public function questions()
{
return $this->hasMany(Question::class);
}
을 그리고 여기 내 데이터베이스/공장/
<?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), ]; });
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)
];
});
내 데이터베이스/공장/UserFactory.php
입니다위의 것을 감안할 때; 나는이처럼 내 더미 데이터 시더에서 모두 사용하려고 :
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.
나는 위의 설정으로 데이터베이스를 씨앗 ; 나는 다음과 같은 오류가 점점 오전 :
[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
내가 대신 각이 아래에있는 내 대답을 iteration.Check에 대한 여러 기록에'saveMany'를 사용할 필요가 save''생각합니다. –