我将实际数据播种到我的数据库时遇到了一些麻烦.我收到错误消息:
"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)
| 归档时间: |
|
| 查看次数: |
3415 次 |
| 最近记录: |