Laravel:完整性约束违规:1062重复条目'jon@doe.com'用于关键'users_email_unique'

Lov*_*ess 5 html php laravel

我将实际数据播种到我的数据库时遇到了一些麻烦.我收到错误消息:

"Integrity constraint violation: 1062 Duplicate entry 'jon@doe.de' for key 'users_email_unique'"
Run Code Online (Sandbox Code Playgroud)

这就是我工厂的样子:

$factory('App\User', [
    'name'     => 'Jon Doe',
    'email'    => 'jon@doe.com',
    'password' => password_hash('123456', PASSWORD_DEFAULT),
]);

$factory('App\User', [
    'name'     => 'Jane Doe',
    'email'    => 'jane@doe.com',
    'password' => password_hash('123456', PASSWORD_DEFAph ULT),
]);
Run Code Online (Sandbox Code Playgroud)

我甚至没有运行UserTableSeeder,但它似乎再次触发了jon@doe.com.

有线索吗?

这是我的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');
    }

}
Run Code Online (Sandbox Code Playgroud)

这是我的UserTableSeeder,上面已注释掉了

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

}
Run Code Online (Sandbox Code Playgroud)

请指教.

小智 0

解决方案很明显,只需使用 faker 在工厂中生成虚拟数据即可

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

]);

因为您有重复的电子邮件地址,并且您在迁移中设置了独特的规则

如果您想覆盖虚拟数据,您可以这样做

$overwrite = ['name' => 'Jon Doe','email' =>'jondoe.email.com'];
TestDummy::times(1)->create('App\User',$overwrite);
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的评论,但这对我没有帮助,因为我收到的错误是由于“重复”电子邮件地址造成的。我的迁移要求电子邮件应该是唯一的。尽管如此,这也没有解决问题,因为我最初的问题是,对于每个创建的订单,都会创建一个新用户,这很奇怪......无论如何,感谢您的回复。 (4认同)