2015-04-13 13 views
5

Tôi gặp phải một số rắc rối khi đưa dữ liệu thực vào cơ sở dữ liệu của mình. Tôi nhận được thông báo lỗi:Laravel: Vi phạm ràng buộc toàn vẹn: 1062 Nhập mục trùng lặp '[email protected]' cho khóa 'users_email_unique'

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

Đây là những gì nhà máy của tôi trông giống như:

$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), 
]); 

Tôi thậm chí không chạy UserTableSeeder, nhưng có vẻ như để bắn [email protected] một lần nữa.

Bất kỳ manh mối nào?

Đây là DatabaseSeeder tôi:

<?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'); 
    } 

} 

Và đây là UserTableSeeder của tôi, đó là nhận xét ra trên

<?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'); 
    } 

} 

lời khuyên hãy.

+1

Bạn mã trông một chút tắt. Mã đã cho có doe.com trong khi lỗi về doe.de. – kranthi117

Trả lời

0

giải pháp là một trong những rõ ràng, chỉ cần sử dụng kẻ giả mạo để tạo dữ liệu giả của mình tại nhà máy của bạn

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

]);

bởi vì bạn có địa chỉ email trùng lặp và bạn đã thiết lập một quy tắc duy nhất trong chuyển đổi của bạn

trong trường hợp bạn muốn ghi đè lên dữ liệu giả, bạn có thể làm

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

Thx cho nhận xét, nhưng điều này không thể giúp tôi, bởi vì lỗi mà tôi nhận được, là do địa chỉ email "trùng lặp". Việc di chuyển của tôi yêu cầu email phải là duy nhất. Tuy nhiên, điều này cũng không giải quyết được vấn đề, vì vấn đề ban đầu của tôi là cho mọi thứ tự tạo ra, một người dùng mới được tạo ra, điều này thật kỳ lạ ... cảm ơn vì đã trả lời. – LoveAndHappiness

+1

bạn đã giải quyết nó như thế nào? – brotherperes

Các vấn đề liên quan