我在将实际数据播种到我的数据库时遇到了一些问题。我收到错误消息:
"Integrity constraint violation: 1062 Duplicate entry 'jon@doe.de' for key 'users_email_unique'"
这是我的工厂的样子:
$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),
]);
我什至没有运行 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');
}
}
这是我的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');
}
}
请指教。
最佳答案
解决方案很明显,只需使用 faker 在您的工厂中生成您的虚拟数据
$factory('App\User', [
'name' => $faker->name,
'email' => $faker->email,
'password' => password_hash('123456', PASSWORD_DEFAULT),
]);
因为您有重复的电子邮件地址,并且您在迁移中设置了独特的规则
如果您想覆盖虚拟数据,您可以这样做
$overwrite = ['name' => 'Jon Doe','email' =>'jondoe.email.com'];
TestDummy::times(1)->create('App\User',$overwrite);
关于php - Laravel:违反完整性约束:1062 键 'jon@doe.com' 的重复条目 'users_email_unique',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29604151/