2016-11-08 10 views
1

モデルファクトリを使用してユーザーを作成しようとしていますが、関係にエラーがあります。 Userモデルでは、JobLevelbelongsToという関係levelsを作成しました。 ModelFactory.phpには次のコードがあります。Laravelモデルファクトリを使用したリレーションの作成

use App\User; 
use App\JobLevel; 

$factory->define(JobLevel::class, function (Faker\Generator $faker) { 
    return [ 
     'name' => $faker->word, 
     'rank' => $faker->randomDigit, 
    ]; 
}); 

$factory->define(User::class, function (Faker\Generator $faker) { 
    return [ 
     'firstname' => $faker->name, 
     'middlename' => $faker->name, 
     'lastname' => $faker->name, 
     'email' => $faker->email, 
     'job_level_id' => factory(JobLevel::class)->create()->id, 
     'password' => bcrypt(str_random(10)), 
     'remember_token' => str_random(10), 
    ]; 
}); 

次に、私はテストクラスに入っています。私は工場を次のように使います。

/** @test */ 
     public function login_a_user() 
     { 
      $user = factory(User::class)->create(); 

      ... 
     } 

私はphpunitを実行すると、私は次のエラー

Illuminate\Database\QueryException: SQLSTATE[23000]: Integrity 

    constraint violation: 1452 Cannot add or update a child row: a foreign key 

    constraint fails (`testing_db`.`user`, CONSTRAINT `fk_user_job_level1` 

FOREIGN KEY (`job_level_id`) REFERENCES `job_level` (`id`) ON DELETE NO 

ACTION ON UPDATE NO ACTION) (SQL: insert into `user` (`updated_at`, 

`created_at`) values (2016-11-08 12:01:14, 2016-11-08 12:01:14)) 

答えて

0

あなたは、テスト目的のためにこれを試してもらえますか?取得

$factory->define(User::class, function (Faker\Generator $faker) { 
    return [ 
     'firstname' => $faker->name, 
     'middlename' => $faker->name, 
     'lastname' => $faker->name, 
     'email' => $faker->email, 
     'job_level_id' => 1, 
     'password' => bcrypt(str_random(10)), 
     'remember_token' => str_random(10), 
    ]; 
}); 

public function login_a_user() 
    { 
     $job = factory(JobLevel::class)->create(); 
     $user = factory(User::class)->create(); 

     ... 
    } 

私はこれらの工場を埋め込むことはできません。

+0

まだ動作していません –

+0

十分ですが、まだSQLエラーメッセージが表示されますか? –

+0

はいまだエラーが表示されます –

関連する問題