我有以下表格users , roles和数据透视表角色_用户具有以下表结构
users
roles
角色_用户
- id
- role_id
-
user_id
<?php
class PivotTableSeeder extends Seeder {
public function run()
{
// Seeds the roles table
DB::table('roles')->delete();
DB::table('role_user')->insert(array(
array('user_id' => 1, 'role_id' => 1),
array('user_id' => 2, 'role_id' => 2),
array('user_id' => 3, 'role_id' => 1),
array('user_id' => 3, 'role_id' => 3),
array('user_id' => 3, 'role_id' => 5)
));
}
}
数据透视表的种子使用DB select
有没有更好的方法来播种表,包括数据透视表?
我在想,也许当我为 users 表播种时,它也会为 role_user 表播种,而不是手动将数据插入到数据透视表中。
Example:
roles
- id = 1
- 角色 = 编码器
- id = 2
- 角色=技术
- id = 3
- 角色=销售
users
- id = 1
- 用户名 = 用户
- 密码=通过
- id = 2
- 用户名 = 用户2
- 密码=pass2
角色_用户
- id = 1
- 用户 ID = 1
- 角色 ID = 1
- id = 2
- 用户 ID = 1
- 角色 ID = 2
- id = 3
- 用户 ID = 2
- 角色 ID = 3
Edit
我正在使用这个 Eloquent 为我的用户表播种。
无论如何,在为用户播种时,role_user 也会更新吗?
User::create(array(
'id' => '1',
'username' => 'user',
'password' => 'pass'
));
User::create(array(
'id' => '2',
'username' => 'user2',
'password' => 'pass2'
));
您可以尝试以下操作(假设您已经拥有种子角色):
$user = User::create(['id' => '1', 'username' => 'user', 'password' => 'pass']);
$user->roles()->sync([1,2]); // array of role ids
$user = User::create(['id' => '2', 'username' => 'user2', 'password' => 'pass2']);
$user->roles()->sync([3,4]); // array of role ids
我用过[]
代替array()
, 如果你的PHP
是先于ver-5.4
那么你应该使用array()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)