gpt4 book ai didi

laravel - 播种数据透视表的更好方法

转载 作者:行者123 更新时间:2023-12-04 16:31:17 24 4
gpt4 key购买 nike

我有以下表格 用户 , 角色和数据透视表 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() .

    关于laravel - 播种数据透视表的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23433209/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com