我在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的所有用户的相反方法。