Laravel;根据另一个表中的值播种到不同的表中

问题描述 投票:0回答:1

我正在尝试使用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);
}
php mysql laravel
1个回答
0
投票

看一下,您可以像这样建立联系:

factory(App\Models\User::class, 10)->create()->each(function ($user) {
        $user->relationNameOfUserAndRole()->save(factory(App\Models\Role::class)->make());
    })
© www.soinside.com 2019 - 2024. All rights reserved.