使用Zizaco的`name`字段的自定义名称/委托包

时间:2015-05-04 04:16:50

标签: laravel-5 user-permissions user-roles

我正在一个拥有大型postgreSQL数据库的项目中工作。之前的项目是从头开始用Java开发的。我们现在正在Laravel开发它。之前的系统user management系统与Zizaco/entrust类似。所以,我们也在我们的系统中使用过。上表中module表使用了permission表,而不是entrust中使用的config/entrust.php表。我们已经通过更改permission_name中的表名来配置它。但是,之前的系统name代替entrust中使用的entrust字段。如何配置permission_name以使用唯一的name代替sources字段。

我正在寻找一个解决方案,因此我们不必更改entrust $this->load->view(),因为升级它会破坏系统。可以在模型中配置吗?

1 个答案:

答案 0 :(得分:1)

Entrust包被硬编码以使用name属性,因此没有配置值或任何可以更改它的内容。但是,您可以尝试的一件事是为name属性定义一个访问器和更改器。

App\Permission模型中,定义以下功能:

class Permission extends Model {
    // accessor
    public function getNameAttribute($value) {
        return $this->permission_name;
    }

    // mutator
    public function setNameAttribute($value) {
        $this->attributes['permission_name'] = $value;
    }
}

访问者和变更者的文档:http://laravel.com/docs/5.0/eloquent#accessors-and-mutators