2017-10-11 115 views
0

我有自己的榜样Laravel强制删除失败

class Role extends EntrustRole 
{ 
    public function permissions() 
    { 
    return $this->belongsToMany('App\Permission', Config::get('entrust::permission_role_table')); 
    } 
} 

现在我想删除了一定的作用

$role = Role::where("display_name",'=', $request->route("role"))->first(); 
$role->delete() //fails 
$role->forceDelete() //also fails 

以上返回一个错误

message www/html/laravel/keybrands/vendor/laravel/framework/ src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php"

"Class name must be a valid object or a string"

的权限模型位于App名称空间中。

我哪里可能出错?

+0

显示的作用模式 – Vikash

+0

@Vikash的示范作用是在问题 –

+0

“*如果可能我是想错了*”。错误:“*类名称必须是有效的对象或字符串*”。关键字:**班级名称**。你在你给我们的代码中使用了哪些类名?在'belongsMany'方法中。所以,有你的调试101(也有整个错误堆栈跟踪,可以给你这个特定的行,使用它)。 – Mjh

回答

2

试试这样说:

class Role extends EntrustRole 
{ 

    public function permissions() 
    { 
     return $this->belongsToMany(Permission::class, config('entrust::permission_role_table')); 
    } 
} 
+0

stil返回相同的错误 –

+0

请在共享权限模型代码 –

+0

经过无数次调试后错误是由委托特质引起的。我不得不在现在的角色模型中添加用户关系。 –

0

检查的堆栈跟踪显示错误由委托特性所引起。

我管理顶部通过添加到角色模型解决此问题。

public function users() 
{ 
    return $this->belongsToMany(Config::get('auth.providers.users.model'),Config::get('entrust.role_user_table'),Config::get('entrust.role_foreign_key'),Config::get('entrust.user_foreign_key')); 

}