laravel中的多对多的第三列种子

时间:2017-08-22 11:16:28

标签: php laravel

我有两个表,分别是用户和组。他们有多对多的关系。实际上,我想存储哪个用户组中的组信息和用户角色。所以我创建了一个迁移表,group_user_table ......

public function up() {
    Schema::create('group_user', function (Blueprint $table) {
        $table->integer('user_id')->unsigned();
        $table->integer('group_id')->unsigned();

        $table->foreign('user_id')->references('id')->on('users');
        $table->foreign('group_id')->references('id')->on('groups');
    });
}

我的种子如何:

$groupQuantity = 26;
$userQuantity = 20;

factory(User::class, $userQuantity)->create();

factory(Group::class, $groupQuantity)->create()->each(function ($foo) {
        $foo->users()->sync(
            User::all()->random(rand(1,20))
        );
});

它完美无缺,但我想在pivot_table中添加用户角色,如:

$table->integer('type')->unsigned()->comment('0- Owner, 1- Admin, 2- User');

我可以添加迁移但我不知道种子? (它给出了一个错误,当我尝试播种时,类型没有默认值。)

或者我应该将第二个数据透视表用于用户角色?

Laravel 5.4 ......

1 个答案:

答案 0 :(得分:1)

您可以通过向其添加数据库功能来修改group_user的播种机。

for($i=0;$i<rand(0,10),$i++) {
    $user = factory(User::class, $userQuantity)->create();
    factory(Group::class, $groupQuantity)->create()->each(function ($foo) {
        DB::table('group_user')->insert([
            [
                'user_id' => $user->id,
                'group_id' => $foo->id,
                'type'    => rand(0,2)
            ],
        ]);        
    });         
}