使用 Zizaco/entrust 包的 `name` 字段的自定义名称
Posted
技术标签:
【中文标题】使用 Zizaco/entrust 包的 `name` 字段的自定义名称【英文标题】:Using custom name of `name` field of Zizaco/entrust Package 【发布时间】:2015-07-13 09:21:51 【问题描述】:我在一个拥有大型 postgreSQL 数据库的项目中工作。之前的项目是用 Java 从头开始开发的。我们现在正在 Laravel 中开发它。以前的系统具有类似于Zizaco/entrust
的user management
系统。所以,我们也在我们的系统中使用。前一个表有module
表而不是entrust
中使用的permission
表。我们已经通过更改config/entrust.php
中的表名来配置它。但是,以前的系统有permission_name
,而不是entrust
中使用的name
字段。如何将 entrust
配置为使用唯一的 permission_name
而不是 name
字段。
我正在寻找解决方案,这样我们就不必更改sources
的entrust
,因为那样升级它会破坏系统。可以在模型中配置吗?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于使用 Zizaco/entrust 包的 `name` 字段的自定义名称的主要内容,如果未能解决你的问题,请参考以下文章
[HOOLOO] zizaco/entrust 5.2.x-dev Class name must be a valid object or a string
Entrust是一种为Laravel5添加基于角色的权限的简洁而灵活的方法。
如何修复 laravel 5.2 zizaco 委托:迁移类名验证?
Entrust - Laravel 用户权限系统解决方案 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 - Powered by PHPHub