我正在尝试使用Laravel播种数据库,我的问题是:
我有一个用户表,一个角色表,一个user_roles表,一个医生表和一个患者表,在userTableSeeder中,所有条目都从角色表中分配了一个角色,并自动放置在user_roles表中。但是我还需要根据分配给他们的roleID自动将每个条目放入各自的表中,因此每个RoleID为1(doctor)的用户也将进入Doctors表,而每个RoleID为2患者)将进入患者表,我该怎么办?
我当前的UserTableSeeder代码,它仅将用户放在Users表和user_roles表中:
public function run()
{
$role_admin = Role::where('name', 'admin')->first();
$role_user = Role::where('name', 'user')->first();
$role_doctor = Role::where('name', 'doctor')->first();
$admin = new User();
$admin->name = 'Marcus Fitzs';
$admin->email = '[email protected]';
$admin->phone = '0873691234';
$admin->address = '9 November road';
$admin->password = bcrypt('secret');
$admin->save();
$admin->roles()->attach($role_admin);
$user = new User();
$user->name = 'John Jones';
$user->email = '[email protected]';
$user->phone = '0871473214';
$user->address = '10 November road';
$user->password = bcrypt('secret');
$user->save();
$user->roles()->attach($role_user);
$doctor = new User();
$doctor->name = 'Dr Doctor';
$doctor->email = '[email protected]';
$doctor->phone = '0872589874';
$doctor->address = '11 November road';
$doctor->password = bcrypt('secret');
$doctor->save();
$doctor->roles()->attach($role_doctor);
}
看一下,您可以像这样建立联系:
factory(App\Models\User::class, 10)->create()->each(function ($user) {
$user->relationNameOfUserAndRole()->save(factory(App\Models\Role::class)->make());
})