2015-04-13 10 views
5

Mam problem z zaniesieniem rzeczywistych danych do mojej bazy danych. Pojawia się komunikat o błędzie:Laravel: Naruszenie ograniczenia integralności: 1062 Zduplikowany wpis "[email protected]" dla klucza "users_email_unique"

"Integrity constraint violation: 1062 Duplicate entry '[email protected]' for key 'users_email_unique'" 

To właśnie moja fabryka wygląda następująco:

$factory('App\User', [ 
    'name'  => 'Jon Doe', 
    'email' => '[email protected]', 
    'password' => password_hash('123456', PASSWORD_DEFAULT), 
]); 

$factory('App\User', [ 
    'name'  => 'Jane Doe', 
    'email' => '[email protected]', 
    'password' => password_hash('123456', PASSWORD_DEFAph ULT), 
]); 

ja nawet nie uruchomić UserTableSeeder, ale wydaje się, że znowu ogień [email protected]

Jakieś wskazówki?

Oto moja DatabaseSeeder:

<?php 

use Illuminate\Database\Seeder; 
use Illuminate\Database\Eloquent\Model; 

class DatabaseSeeder extends Seeder { 

    /** 
    * Run the database seeds. 
    * 
    * @return void 
    */ 
    public function run() 
    { 
     Model::unguard(); 

     // $this->call('UserTableSeeder'); 
     $this->call('ClientTableSeeder'); 
     $this->call('OrderTableSeeder'); 
     $this->call('FileTableSeeder'); 
    } 

} 

A to moja UserTableSeeder, który jest komentarzem powyżej

<?php 

use Illuminate\Database\Seeder; 

// composer require laracasts/testdummy 
use Laracasts\TestDummy\Factory as TestDummy; 

class UserTableSeeder extends Seeder { 

    public function run() 
    { 
     TestDummy::times(1)->create('App\User'); 
    } 

} 

Proszę o poradę.

+1

kod wygląda trochę poza. Podany kod ma doe.com, podczas gdy błąd dotyczy doe.de. – kranthi117

Odpowiedz

0

rozwiązanie jest oczywiste, wystarczy użyć faker aby wygenerować fikcyjne dane w fabryce

$factory('App\User', [ 
'name'  => $faker->name, 
'email' => $faker->email, 
'password' => password_hash('123456', PASSWORD_DEFAULT), 

]);

bo masz zduplikowane adresy e-mail i zostało ustawione unikalne zasady w swojej migracji

w przypadku chcesz nadpisać dane fikcyjne, można zrobić

$overwrite = ['name' => 'Jon Doe','email' =>'jondoe.email.com']; 
TestDummy::times(1)->create('App\User',$overwrite); 
+3

Thx za komentarz, ale to nie może mi pomóc, ponieważ błąd, który otrzymuję, jest spowodowany "duplikowaniem" adresów e-mail. Moja migracja wymaga, aby wiadomości e-mail były niepowtarzalne. Nie rozwiązuje to jednak problemu, ponieważ mój początkowy problem polega na tym, że dla każdego utworzonego zamówienia został utworzony nowy użytkownik, co było dość dziwne ... dzięki za odpowiedź. – LoveAndHappiness

+1

jak to rozwiązałeś? – brotherperes

Powiązane problemy