用ID数组替换数据透视表,并在关系中使用它

时间:2019-07-18 12:06:55

标签: php laravel postgresql

我在Largre 5.8和postgreSQL中使用

具有管理员和角色模型。

迁移:

Schema::create('admins', function (Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
        });

DB :: statement('ALTER TABLE admins ADD COLUMN role_ids integer []');

====

Schema::create('roles', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name'); //Web Developer
            $table->timestamps();
        });

===

现在,在应用管理员和角色之间的关系时,我尝试使用此role_ids []替换数据透视表。 我找到了一个可以做到这一点的程序包,但是它是通过JSON postgre类型而不是数组。 基本上,这是一个多对多的关系,尽管由于没有数据透视表,所以我无法使用雄辩的elosantToMany()。 所以, 1)这是最佳实践,因为考虑到该模式将在我的数据库中使用很多。 2)我应该用JSON替换数组类型,并考虑我拥有的解决方案,还是继续将它们用作数组。 包装:
https://packagist.org/packages/staudenmeir/eloquent-json-relations

试图使用eloquent-json-relations,它确实有效,但不适用于数组类型。

public function users()
{
    return $this->belongsToMany(Admin::class, 'id', 'roles_ids');
}

这显然不起作用。

我希望使用类似: \ Auth :: user()->角色,以根据role_ids列与此分配给他的用户角色建立关系。 这也是获取具有特定角色ID的所有用户的相反方法。

0 个答案:

没有答案