我有以下表格 用户 , 角色和数据透视表 role_user 具有以下表结构

用户

  • id
  • 用户名
  • 密码

  • 角色
  • id
  • 角色

  • 角色_用户
  • id
  • role_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 播种的

    有没有更好的方法来播种表,包括数据透视表?

    我在想也许当我为我的用户表做种子时,它也会为 role_user 表做种子,而不是手动将数据插入数据透视表。

    例子:

    角色
  • id = 1
  • 角色 = 编码器
  • id = 2
  • 角色 = 技术
  • id = 3
  • 角色 = 销售

  • 用户
  • id = 1
  • 用户名 = 用户
  • 密码 = 通行证
  • id = 2
  • 用户名 = 用户 2
  • 密码 = pass2

  • 角色_用户
  • id = 1
  • 用户 ID = 1
  • role_id = 1
  • id = 2
  • 用户 ID = 1
  • role_id = 2
  • id = 3
  • 用户 ID = 2
  • role_id = 3


  • 编辑

    我正在使用这个 Eloquent 为我的用户表做种。
    无论如何,在为 User 播种时,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() .


    评论关闭
    IT干货网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!